Official
C - Cheese Editorial by physics0523
基本的に、チーズ \(1\)[g] あたりの美味しさが大きいものから使っていくことが最適です。
まず、チーズを美味しさが大きい方からソートします。そのうえで、順番にチーズを使えるだけ使えばよいです。
具体的には、チーズの美味しさが大きいものから順に以下を行うとよいです。
- チーズを残り \(w\)[g] 使え、現在着目しているチーズが \(B_k\)[g] 残っているとき、そのチーズを \(\min(w,B_k)\)[g] 使うことにする。
実装例(C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,w;
cin >> n >> w;
vector<pair<long long,long long>> v(n);
for(auto &nx : v){
cin >> nx.first >> nx.second;
}
sort(v.begin(),v.end());
reverse(v.begin(),v.end());
long long res=0;
for(auto &nx : v){
res+=nx.first*min(w,nx.second);
w-=min(w,nx.second);
}
cout << res << '\n';
return 0;
}
posted:
last update: