@[蛇皮](/user/45613) 2、3点答案是0
by 老八小憨包 @ 2020-02-20 11:49:46
@[蛇皮](/user/45613) 第三点数据比较毒瘤,会刚刚好相等(sum=n)这时会无限循环,知道超出数组下标
所以RE。
第二点m和n都是0,要特判
by 老八小憨包 @ 2020-02-20 12:04:05
```cpp
#include<bits/stdc++.h>
using namespace std;
typedef struct{
int cost;
int num;
}milk;
milk a[6000000]={0};
int cmp(milk x,milk y)
{
return x.cost<y.cost;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
cin>>a[i].cost>>a[i].num;
}
if(n==0)
{
cout<<0<<endl;
return 0;
}
sort(a+1,a+m+1,cmp);
int sum=0;
int k=0;
int money=0;
while(sum<n)//****
{
k++;
sum+=a[k].num;
money+=a[k].cost*a[k].num;
}
money=money+(n-sum)*a[k].cost;//****
cout<<money;
return 0;
}
```
这样就好了
by 老八小憨包 @ 2020-02-20 12:05:25
已AC
by 老八小憨包 @ 2020-02-20 12:07:13
@[老八小憨包](/user/318931) 十分感谢
by 蛇皮 @ 2020-02-20 12:18:33
@[老八小憨包](/user/318931) 还有一个疑问,就是第二点用原来的代码,win下面输出0,为什么还是会re呢
by 蛇皮 @ 2020-02-20 12:20:01
可能测评机制不同?
我用的洛谷IDE也RE了
by 老八小憨包 @ 2020-02-20 12:55:07