记录编号 612617 评测结果 AAAAAAAAAA
题目名称 [统一省选 2020]冰火战士 最终得分 100
用户昵称 Gravatar终焉折枝 是否通过 通过
代码语言 C++ 运行时间 9.538 s
提交时间 2026-02-24 19:14:33 内存使用 27.75 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
const int MAXN = 2 * 1e6 + 5;
ll t1[MAXN], t2[MAXN];
int lsh[MAXN], tot;
ll sum = 0;

struct node{
	int op, t, x, y;
}q[MAXN];

int lowbit(int x){
	return x & -x;
}

void add(ll *bit, int x, ll k){
//	if(x <= 0) return;
	while(x <= tot + 1){
		bit[x] += k;
		x += lowbit(x);
	}
}

int Q;

int main(){
	cin.tie(0) -> ios::sync_with_stdio(0);
	
	cin >> Q;

	for(int i = 1;i <= Q;i ++){
		cin >> q[i].op;
		if(q[i].op == 1){
			cin >> q[i].t >> q[i].x >> q[i].y;
			lsh[++ tot] = q[i].x;
		}
		else{
			cin >> q[i].t;
		}
	}

	sort(lsh + 1, lsh + tot + 1);

	tot = unique(lsh + 1, lsh + tot + 1) - (lsh + 1);

	for(int i = 1;i <= Q;i ++){
		if(q[i].op == 1){
			q[i].x = lower_bound(lsh + 1, lsh + tot + 1, q[i].x) - lsh;
		}
	}

	for(int i = 1;i <= Q;i ++){
		if(q[i].op == 1){
			if(q[i].t == 0) add(t1, q[i].x, q[i].y);
			else add(t2, q[i].x + 1, q[i].y), sum += q[i].y;
		}
		else{
			if(q[q[i].t].t == 0) add(t1, q[q[i].t].x, -q[q[i].t].y);
			else add(t2, q[q[i].t].x + 1, -q[q[i].t].y), sum -= q[q[i].t].y;
		}
		ll p1 = 0, s1 = 0, s2 = 0;
		for(int j = 20;j >= 0;j --){
			int nxt = p1 + (1 << j);
			if(nxt <= tot && s1 + t1[nxt] < sum - (s2 + t2[nxt])){
				p1 = nxt, s1 += t1[nxt], s2 += t2[nxt];
			}
		}
		ll res1 = s1;
		ll res2 = 0, p2 = 0;
		if(p1 < tot){
			ll ss1 = 0, ss2 = 0;
			for(int j = p1 + 1;j;j -= lowbit(j)){
				ss1 += t1[j], ss2 += t2[j];
			}
			res2 = sum - ss2;
			if(res2 >= res1){
				p2 = 0, ss2 = 0;
				for(int j = 20;j >= 0;j --){
					int nxt = p2 + (1 << j);
					if(nxt <= tot && sum - (ss2 + t2[nxt]) >= res2){
						p2 = nxt;
						ss2 += t2[nxt];
					}
				}
			}
		}
		if(res1 == res2 && res1 == 0){
			cout << "Peace\n";
		}
		else if(res1 <= res2){
			cout << lsh[p2] << ' ' << res2 * 2 << '\n';
		}
		else{
			cout << lsh[p1] << ' ' << res1 * 2 << '\n';
		}
	}

	return 0;
}