| 比赛 |
收心赛 |
评测结果 |
TTTTTTTTTT |
| 题目名称 |
冰火战士 |
最终得分 |
0 |
| 用户昵称 |
赵飞羽 |
运行时间 |
31.002 s |
| 代码语言 |
C++ |
内存使用 |
3.45 MiB |
| 提交时间 |
2026-02-24 11:23:58 |
显示代码纯文本
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2000010;
int Q, op, t, k, p[N], A, B, cnt = -1, ans = -1, c[N], d[N];
struct ice{
int idx, x, y;
bool friend operator <(ice u, ice v) {
if (u.x == v.x) return u.y > v.y;
return u.x < v.x;
}
} a[N];
struct fire{
int idx, x, y;
bool friend operator <(fire u, fire v) {
if (u.x == v.x) return u.y > v.y;
return u.x > v.x;
}
} b[N];
int _(int q) {
for (int i = 1; i <= A; i++) c[i] = a[i].y;
for (int i = 1; i <= B; i++) d[i] = b[i].y;
int l = 1, r = 1, sum = 0;
while (l <= A && r <= B) {
if (q < c[l]) return sum;
if (q > d[r]) return sum;
sum += min(c[l], d[r]) * 2;
if (c[l] > d[r]) c[l] -= d[r], r++;
else if (c[l] < d[r]) d[r] -= c[l], l++;
else {
l++;
r++;
}
}
return sum;
}
signed main() {
freopen("icefire.in", "r", stdin);
freopen("icefire.out", "w", stdout);
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> Q;
for (int i = 1; i <= Q; i++) {
cin >> op;
if (op == 1) {
cin >> t;
p[i] = t;
if (!t) {
cin >> a[i].x >> a[i].y;
a[i].idx = i;
A++;
sort(a+1, a+1+A);
} else {
cin >> b[i].x >> b[i].y;
b[i].idx = i;
B++;
sort(b+1, b+1+B);
}
} else {
cin >> k;
if (!p[k]) {
for (int j = 1; j <= A; i++) {
if (k == a[j].idx) {
a[j].x = 10000000000;
sort(a+1, a+1+A);
A--;
}
}
} else {
for (int j = 1; j <= B; i++) {
if (k == b[j].idx) {
b[j].x = 0;
sort(b+1, b+1+B);
B--;
}
}
}
}
for (int j = 1; j <= A; j++) {
if (_(a[j].x) >= cnt) {
cnt = _(a[j].x);
ans = max(ans, a[j].x);
}
}
for (int j = 1; j <= B; j++) {
if (_(b[j].x) >= cnt) {
cnt = _(b[j].x);
if (cnt > 0) ans = max(ans, b[j].x);
}
}
if (ans == -1) cout << "Peace\n";
else cout << ans << " " << cnt << "\n";
}
return 0;
}