公式

A - Online Shopping 解説 by mechanicalpenciI


高橋君が支払う金額は次のステップによって求めることができます。

  1. 購入する商品の合計金額を計算する。
  2. 合計金額が \(S\) 円以上ならばその金額が、そうでないならば合計金額に \(K\) を加えたものが答えとなる。

購入する商品の合計金額は \(i=1,2,\ldots,N\) についての \((P_i\times Q_i)\) の値を足し合わせればよく、for文などによって計算できます。
その後、if文によって、送料を判定すれば良いです。

よって、この問題を解くことができました。
なお、高橋君の支払う金額は高々 \(100\times(10000\times 100)+10000<2^{31}\) 円であるため、符号付き \(32\) bit 整数型で扱える範囲に収まっています。

c++ による実装例:

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

int main() {
	int n,s,k,p,q;
	int ans=0;

	cin>>n>>s>>k;
	for(int i=0;i<n;i++){
		cin>>p>>q;
		ans+=(p*q);
	}
	if(ans<s)ans+=k;
	
	cout<<ans<<endl;
	return 0;
}

python による実装例:

n,s,k=map(int, input().split())
ans=0

for i in range(n):
    p,q=map(int, input().split())
    ans+=(p*q)

if ans<s:
    ans+=k

print(ans)

投稿日時:
最終更新: