# Greedy# Iteration# Basic Math

f605 - 1. 購買力

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算在給定價格波動閾值 d 下,需要購買的商品數量以及總費用。對於每個商品,如果其近三天的價格最大值與最小值的差大於等於 d,則購買該商品,費用為近三天的平均價格。

解題思路

這題的解題思路是簡單的迭代。對於每個商品,計算其近三天的價格的最大值和最小值,判斷差值是否大於等於給定的閾值 d。如果滿足條件,則將購買的商品數量加一,並將該商品的平均價格加到總費用中。最後輸出購買的商品數量和總費用。

複雜度分析

  • 時間複雜度: O(n)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
using namespace std;
int main(){
	cin.tie(0); ios::sync_with_stdio(false);
	int n,d,s=0,m=0,a,b,c;
	cin >> n >> d;
	while(n--){
		cin >> a >> b >> c;
		if(max(a,max(b,c))-min(a,min(b,c))>=d){
			++s;
			m+=(a+b+c)/3;
		}
	}
	cout << s << " " << m;
}

Discussion