rt. 在学校模拟赛里被卡到 80pts。
struct Peo {
ll w, s, p;
} a[N];
bool cmp(Peo a, Peo b) {
if (a.w != b.w)
return a.w < b.w;
//2 3 1
if (a.p == b.p)
return true;
if (a.p == 2)
return true;
if (b.p == 2)
return false;
if (a.p == 3)
return true;
return false;
}
上面是 80pts 代码的 cmp 函数。
int val[] = {0, 3, 1, 2};
bool cmp(Peo a, Peo b) {
if (a.w != b.w)
return a.w < b.w;
return val[a.p] < val[b.p];
}
上面是 AC 代码的 cmp 函数。
int val[] = {0, 3, 1, 2};
bool cmp(Peo a, Peo b) {
if (a.w != b.w)
return a.w < b.w;
return val[a.p] <= val[b.p];
}
如果 cmp 函数这么写,又变成 80pts 且有点 RE。
请问这是为什么?