81pts RE 求助
查看原帖
81pts RE 求助
627636
封禁用户楼主2023/6/5 10:37

最后一个子任务过了,倒数第二个没过。。

#include <iostream>
#include <set>
using namespace std;
multiset<int> s, qwq;
int c;
int best(int x, bool seele) {
	if (x < 0) return -1;
	if(seele) s.erase(s.find(x));
	int t = *(--s.upper_bound(c-1-x));
	if (seele) s.insert(x);
	return t;
}
void add(int x) {
	int I, love, seele;
	seele = best(love = best(I = best(x, 0), 1), 1);
	if (I > 0 && x > love) {
		qwq.insert(x+I);
		if(love > 0 && I == seele) qwq.erase(qwq.find(love+seele));
	}
	s.insert(x);
}
void del(int x) {
	int I, love, seele;
	s.erase(s.find(x));
	seele = best(love = best(I = best(x, 0), 1), 1);
	if (I > 0 && x > love) {
		qwq.erase(qwq.find(x+I));
		if (love > 0 && I == seele) qwq.insert(love+seele);
	}
}
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n, op, x, ans=0;
	s.insert(-1);
	qwq.insert(-1);
	cin >> n >> c;
	for (int i=1; i<=n; i++) {
		cin >> op >> x;
		op--;
		x ^= ans;
		x %= c;
		op ? del(x) : add(x);
		if (s.size() <= 2) {
			cout << "EE\n";
			ans=0;
			continue;
		}
		auto it = --s.end();
		cout << (ans = max((*it + *--it) % c, *(--qwq.end()))) << '\n';
	}
}
2023/6/5 10:37
加载中...