pengkingli 2020-03-28
2 50 4 10 100 50 30 7 34 87 100 10000 5 1 43 43 323 35 45 43 54 87 43
171.93 508.00
#include <bits/stdc++.h> using namespace std; struct Node{ double n,v; double q; }a[105]; bool cmp(Node a,Node b){ return a.q>b.q; } int main() { int k,s,w; cin>>k; while(k--){ cin>>w>>s; for(int i=0;i<s;i++){ cin>>a[i].n>>a[i].v; a[i].q=a[i].v/a[i].n; } double ans=0; sort(a,a+s,cmp); int i=0; while(w>0){ if(w-a[i].n>0){ ans+=a[i].v; w-=a[i].n; i++; } else { ans+=a[i].q*w; w=0; } } printf("%.2lf\n",ans); } return 0; }