48分,后面四个数据点全RE。
所以我抱着试一试的心态,把数组容量调大,c[5005]换成c[2000001]居然就过了。
不是说0<=m<=5000吗?
48分代码如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
ll p,a;
}c[5005];
bool cmp(node x,node y){
return x.p<y.p;
}
ll sum,n,m,i;
int main(){
scanf("%lld%lld",&n,&m);
for(i=1;i<=m;i++) cin>>c[i].p>>c[i].a;
sort(c+1,c+n+1,cmp);
i=1;
while(1){
if(c[i].a>=n){
sum+=c[i].p*n;
printf("%lld",sum);
return 0;
}
n-=c[i].a;
sum+=c[i].a*c[i].p;
i++;
}
}