原题地址
WA了好多次。。郁闷
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct data
{
int a;int b;
};
bool cmp(data a,data b)
{
return a.a<b.a;
}
int main()
{
int T,n,m,i;
data f[1001];
double x;
for(scanf("%d",&T);T>0;T--)
{
scanf("%d%d",&m,&n);
{
x=0;
for(i=0;i<n;++i)
{
scanf("%d%d",&f[i].a,&f[i].b);
}
}
sort(f,f+n,cmp);
double sum=0;int price=0;
for(i=0;i<n;++i)
{
if(price+f[i].a*f[i].b<=m)
{sum+=f[i].b;price=price+f[i].a*f[i].b;}
else
{
sum+=1.00*(m-price)/f[i].a;
break;
}
}
printf("%.2lf\n",sum);
}
return 0;
}