Description:
Accept:
#include<bits/stdc++.h>
using namespace std;
int t;
struct Node{
double prize;
double weight;
double value;
Node(){
prize=0;
weight=0;
value=0;
}
Node(double p, double w, double v){
prize=p;
weight=w;
value=v;
}
};
vector<Node>node;
double n, m;
bool cmp(Node x, Node y){
return x.value>y.value;
}
int main()
{
cin>>t;
while(t--){
cin>>n>>m;
for(int i=0;i<m;i++){
double p, w, v;
cin>>p>>w;
p=p*w;
v=w/p;
node.push_back(Node{p, w, v});
}
sort(node.begin(), node.end(), cmp);
// for(int j=0;j<node.size();j++){
// cout<<node[j].prize<<" "<<node[j].weight<<" "<<node[j].value<<endl;
// }
int j=0;
double ans=0;
while(n>0){
if(n-node[j].prize>=0){
ans+=node[j].weight;
n-=node[j].prize;
}
else if(n-node[j].prize<0&&n>0){
ans+=n*node[j].weight/node[j].prize;
n=-1;
}
else{
break;
}
j++;
}
printf("%.2lf\n", ans);
node.clear();
}
return 0;
}