公式
B - まとめ買い割引 / Bulk Purchase Discount 解説
by
B - まとめ買い割引 / Bulk Purchase Discount 解説
by
physics0523
実は、商品を棚に戻す必要はありません。
定価 \(a\) 円の商品を戻した状態からその商品を加えることを考えたとき、どのような場合でも費用の増加は高々 \(a\) 円で済むので、別のスーパーで商品を買う意味はありません。
よって、全ての商品を買った場合に割引がどのティアに属するか判定し、割引後の金額を出力すればよいです。
最初から \(T_i\) の昇順に与えられるため、ティアの判定の際は \(i\) の降順に調べていくとよいです。
実装例 (C++):
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int main(){
ll N,K;
cin >> N >> K;
vector<ll> T(K),P(K);
for(ll i=0;i<K;i++){
cin >> T[i] >> P[i];
}
ll s=0;
for(ll i=0;i<N;i++){
ll C;
cin >> C;
s+=C;
}
for(ll i=K-1;i>=0;i--){
if(s>=T[i]){
cout << s-((s*P[i])/100) << "\n";
return 0;
}
}
cout << s << "\n";
return 0;
}
