Rt,对自己写的代码没(很)有自信,求 hack
#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int Maxm=5010;
struct Information{
int up; //单价
int sum; //牛奶量
}a[Maxm];
inline void read(int &x){
int f=1;
char ch=getchar();
x=0;
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<3)+(x<<1)+(ch&15);
ch=getchar();
}
x*=f;
}
inline void write(int x){
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
inline int min(int a,int b){return a<b?a:b;}
inline int max(int a,int b){return a>b?a:b;}
inline bool cmp(Information p,Information q){return p.up<q.up;}
signed main(){
//freopen("read.txt","r",stdin);
int res=0; //当前价格
int cnt=0; //当前牛奶总量
int n,m;
read(n);read(m);
for(int i=1;i<=m;i++) read(a[i].up),read(a[i].sum);
sort(a+1,a+m+1,cmp);
//for(int i=1;i<=m;i++) printf("%d %d\n",a[i].up,a[i].sum);
//putchar('\n');
if(m==1){
if(a[1].sum<n){
printf("0");
return 0;
}
else{
write(a[1].up*n);
return 0;
}
}
for(int i=1;i<=m;i++){
if(cnt>=n){
write(res);
return 0;
}
else if(n-cnt<a[i].sum){
res=res+(n-cnt)*a[i].up;
cnt+=(n-cnt);
//printf("%d %d\n",cnt,res);
}
else{
res=res+a[i].up*a[i].sum;
cnt+=a[i].sum;
//printf("%d %d\n",cnt,res);
}
}
printf("0");
return 0;
}