第二三点为什么会re,救救孩子,数组好像已经够大了

P1208 [USACO1.3] 混合牛奶 Mixing Milk

@[蛇皮](/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


|