#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct
{
long long p,a;
}peo;
int compare(const void*a,const void*b)
{
peo*a1=(peo*)a;
peo*b1=(peo*)b;
if(a1->p<b1->p)return -1;
if(a1->p>b1->p)return 1;
return 0;
}
peo nn[9876543];
int main()
{
int s=0;
int n,m,e=0;
scanf("%d%d",&n,&m);
while(e<m)
{
scanf("%lld%lld",&nn[e].p,&nn[e].a);
e++;
}
qsort(nn,n,sizeof(peo),compare);
for(int i=0;;i++)
{
if(n-nn[i].a>0)
{
n-=nn[i].a;
s+=nn[i].p*nn[i].a;
}
else
{
s+=nn[i].p*n;
break;
}
}
printf("%d",s);
return 0;
}
整个代码可以过,但peo nn[9876543]数组一定要开这么大,可实际的数据大小才5000,这是为什么,要怎么改