做这道题时发现了一件事
如果这样写,第六个点会RE,sort函数会爆掉,返回3221225477(以下代码经过精简)
#include <bits/stdc++.h>
using namespace std;
struct Node {
int a, b;
long long val;
} men[10005];
bool cmp (Node x, Node y) {
return x.val <= y.val;
}
int main () {
int n;
scanf("%d", &n);
for (int i = 1; i <= n + 1; i++) {
scanf("%d%d", &men[i].a, &men[i].b);
men[i].val = men[i].a * men[i].b;
}
sort(men + 2, men + n + 2, cmp);
return 0;
}
将cmp函数中的 <= 改为 < 后,就能解决问题得到AC
想请教一下大佬们,为什么cmp中用<=会产生bug,赛场上能不能用<=,以及如果非要用<=该怎么处理才能避免RE
万分感谢。
附case6数据
100
1 1
1 1
2 1
2 2
1 2
1 2
2 2
1 2
1 2
2 2
2 2
1 2
2 1
1 2
1 2
1 2
1 2
2 2
1 2
1 1
1 1
1 1
1 1
1 2
1 2
1 1
1 1
1 2
1 2
2 2
1 1
1 2
1 1
1 2
2 2
1 2
1 2
2 2
2 2
1 2
1 2
2 1
1 2
1 1
1 2
1 1
2 1
2 2
1 1
2 2
1 1
2 2
1 2
2 2
1 2
2 2
1 2
1 2
2 2
1 2
2 2
1 2
1 2
1 1
2 1
1 2
1 2
1 2
1 2
1 2
1 2
1 2
1 1
2 2
1 2
2 1
2 2
1 2
1 1
1 2
1 1
1 2
1 2
2 2
1 2
1 1
1 1
2 2
1 2
2 2
2 1
1 2
2 1
1 2
1 2
2 2
1 2
1 2
1 2
1 1
1 2