1225:金银岛

liujiaxing- / 2024-10-25 / 原文

 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 }