哦哦,cmp应该是
```c
bool cmp(node a, node b) {
return a.mon < b.mon;
}
```
上面给的是WA了更多的代码
by cscst @ 2021-08-04 16:51:47
初始化的原因
将while中的```int sum; ``` 改为 ```int sum = 0;```即可。
by alvis @ 2021-08-04 17:13:13
@[alvis](/user/195388) 刚才改了,第一个点A了,不过第7个第8个还是WA
by cscst @ 2021-08-04 17:15:43
这样就A了
```cpp
#include<bits/stdc++.h>
using namespace std;
int need, m;
long long ans = 0;
struct node {
int mon;
int num;
} a[5005];
bool cmp(node a, node b) {
return a.mon < b.mon;
}
int main() {
cin >> need >> m;
for(int i = 1; i <= m; i++)
cin >> a[i].mon >> a[i].num;
sort(a + 1, a + m + 1, cmp);
int j = 0;
while(need) {
j++;
int sum = 0;
sum += a[j].num;
if(sum <= need) {
need -= a[j].num;
ans += a[j].num * a[j].mon;
} else {
while(need) {
a[j].num--;
need--;
ans += a[j].mon;
}
}
//cout << "ans : " << ans << " " << "need : " << need << " " << j<< endl;
}
cout << ans;
}
```
by alvis @ 2021-08-04 17:28:59
@[alvis](/user/195388) 谢谢,不过else里面可以用更简单的方法。
```c
ans += need * a[j].mon;
break;
```
by cscst @ 2021-08-04 17:45:56