```
#include<bits/stdc++.h>
using namespace std;
long long n,m,summ;
struct cow{
long long d,s;
}a[2000005];
bool cmpp(cow x,cow y)
{
return x.d<y.d;
}
int main()
{
cin>>n>>m;
for(int i=0; i<m; i++)
cin>>a[i].d>>a[i].s;
sort(a,a+m,cmpp);
int i=0;
while(n > 0)
{
if(a[i].s > 0)
{
a[i].s--;
summ+=a[i].d;
n--;
}
else
i++;
}
cout<<summ;
return 0;
}
```
by drinktowind @ 2023-12-06 20:40:59
你的代码有以下问题
1.数组开小,2*10的6次方开5005,建议开大范围。
2.排序规则不对
```小于或者等于奶农最大产量的整数数量的牛奶```
说明,不用排序产量
by drinktowind @ 2023-12-06 20:43:34
换行全部阵亡了QWQ,给个关吧
by drinktowind @ 2023-12-06 20:44:20
玄学,`cmpp`最后一行`return true`会WA,`return false`能AC。
AC 代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
long long n,m,summ;
struct cow{
long long d,s;
}a[5005];
bool cmpp(cow x,cow y)
{
if(x.d != y.d)
return x.d<y.d;
else if(x.s != y.s)
return x.s>y.s;
return false;
}
int main()
{
cin>>n>>m;
for(int i=0; i<m; i++)
cin>>a[i].d>>a[i].s;
sort(a,a+m,cmpp);
int i=0;
while(n > 0)
{
if(a[i].s > 0)
{
a[i].s--;
summ+=a[i].d;
n--;
}
else
i++;
}
cout<<summ;
return 0;
}
```
by wanglexi @ 2023-12-06 20:46:06
数组没开小 @[drinktowind](/user/719619)
总共是 $m$ 桶奶,奶的需求量是 $n$,开5000没问题
by wanglexi @ 2023-12-06 20:47:45
@[wch666](/user/778382)
by wanglexi @ 2023-12-06 20:47:55
@[wanglexi](/user/378403) 《我满级眼瞎》
by drinkto_wind @ 2023-12-06 20:52:04
@[drinkto_wind](/user/931825) 你是小号?
by wangzhiqin @ 2023-12-06 21:01:43
@[wangzhiqin](/user/410272) 怎么
by drinkto_wind @ 2023-12-06 21:02:16
@[drinkto_wind](/user/931825)
@[wanglexi](/user/378403)
谢谢两位大佬
已关
by wch666 @ 2023-12-07 17:22:52