1225:金银岛
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int k; 5 cin>>k; 6 for(int i=0;i<k;i++){ 7 int w,s; 8 double sum=0; 9 cin>>w; 10 cin>>s; 11 double n[s+5],v[s+5]; 12 for(int j=1;j<=s;j++){ 13 cin>>n[j]>>v[j]; 14 } 15 for(int j=1;j<=s;j++){ 16 for(int t=j;t<=s;t++){ 17 if(v[j]/n[j]<v[t]/n[t]){ 18 swap(v[j],v[t]); 19 swap(n[j],n[t]); 20 } 21 } 22 } 23 for(int j=1;j<=s;j++){ 24 if(w>=n[j]){ 25 w-=n[j]; 26 sum+=v[j]; 27 }else{ 28 sum+=w*(v[j]/n[j]); 29 w=0; 30 break; 31 } 32 } 33 printf("%.2lf",sum); 34 cout<<endl; 35 } 36 return 0; 37 }