一遍过
贪心
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
struct nico
{
int a,p;
}f[5000+5];
int comp(nico a,nico b)
{
return a.p<b.p;
}
int m,n,i,p;
int main()
{
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
scanf("%d%d",&f[i].p,&f[i].a);
sort(f+1,f+m+1,comp);
i=1;
while(n)
{
if(n>f[i].a)
{
n-=f[i].a;
p+=f[i].p*f[i].a;
i++;
}
else
{
p+=f[i].p*n;
n=0;
}
}
printf("%d",p);
return 0;
}