USACO 1.3-Mixing Milk
/* ID: m1590291 TASK: milk LANG: C++ */ /****************************************************************************************************************** 单价升序排序 -> 按单价购买牛奶花费最小 ******************************************************************************************************************/ #include <iostream> #include <fstream> #include <algorithm> using namespace std; struct Node { int P,A; }node[5050]; bool cmp(Node x,Node y) { return x.P<y.P; } int main() { ifstream fin("milk.in"); ofstream fout("milk.out"); int N,M; while(fin>>N>>M) { int total=0; if(N<0 || N>2000000 || M<0 || M>5000) break; for(int i=0;i<M;i++) fin>>node[i].P>>node[i].A; sort(node,node+M,cmp); for(int i=0; i<M; i++){ if(N-node[i].A > 0){ N-=node[i].A; total+=node[i].P*node[i].A; } else{ total+=N*node[i].P; N=0; } } fout<<total<<endl; } fin.close(); fout.close(); return 0; }