社区讨论
求条样例输出 159 -10
P6627[省选联考 2020 B 卷] 幸运数字参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mk84c4gk
- 此快照首次捕获于
- 2026/01/10 17:44 2 个月前
- 此快照最后确认于
- 2026/01/13 17:30 2 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
int n;
vector<pair<int, int> > m;
int main() {
//freopen("lucky.in", "r", stdin);
//freopen("lucky.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++) {
int op, x, y, w;
cin >> op;
if (op == 1) {
cin >> x >> y >> w;
m.push_back({x, w});
m.push_back({y + 1, w});
} else if (op == 2) {
cin >> x >> w;
m.push_back({x, w});
m.push_back({y + 1, w});
} else if (op == 3) {
cin >> x >> w;
m.push_back({-1e9, w});
m.push_back({x, w});
m.push_back({x + 2, w});
m.push_back({1e9, w});
}
}
sort(m.begin(), m.end());
int maxn = INT_MIN;
int tmp;
int sum = 0;
int l, r;
for (int i = 1; i <= n; i = tmp) {
tmp = i;
while (m[i].first == m[tmp].first) {
sum ^= m[tmp].second;
tmp++;
}
if (maxn < sum) {
maxn = sum;
l = m[i].first;
r = m[tmp].first - 1;
} else if (maxn == sum) {
int lr1 = (abs(m[i].first) > abs(m[tmp].first - 1) ? m[i].first : m[tmp].first);
int lr2 = (abs(l) > abs(r) ? l : r);
if (abs(lr1) < abs(lr2)) {
l = m[i].first;
r = m[tmp].first - 1;
} else if (abs(lr1) == abs(lr2) && lr1 != lr2) {
if (lr2 < 0) {
l = m[i].first;
r = m[tmp].first - 1;
}
}
}
}
cout << maxn << " " << (abs(l) > abs(r) ? l : r);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...