Official

D - Webサービス/Web Service Editorial by m_99


無料会員・一般会員・プレミアム会員になった場合に支払う合計金額をそれぞれ求め、その中で一番小さい金額を出力すればよいです。

月ごとに支払う金額調べるのにはfor文を用いるのが便利です。

解答例(C++)

#include <bits/stdc++.h>
using namespace std;

int main() {
    
	int A,B,C;
	cin>>A>>B>>C;
	
	vector<int> x(12);
	for(int i=0;i<12;i++)cin>>x[i];
	
	//プレミアム会員になった場合の合計金額
	int ans = C;
	
	//無料会員になった場合の合計金額
	{
		int sum = 0;
		for(int i=0;i<12;i++){
			sum += max(0,x[i]-3)*A;
		}
		ans = min(ans,sum);
	}
	
	//一般会員になった場合の合計金額
	{
		int sum = B;
		for(int i=0;i<12;i++){
			sum += max(0,x[i]-50)*A;
		}
		ans = min(ans,sum);
	}
	
	cout<<ans<<endl;
	
	return 0;
}

posted:
last update: