rt,O(nlog2n) 的代码被放过了,record。
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define mk make_pair
#define ll long long
#define space putchar(' ')
#define enter putchar('\n')
using namespace std;
inline int read() {
int x = 0, f = 1;
char c = getchar();
while (c < '0' || c > '9') f = c == '-' ? -1 : f, c = getchar();
while (c >= '0' && c <= '9') x = (x<<3)+(x<<1)+(c^48), c = getchar();
return x*f;
}
inline void write(int x) {
if (x < 0) x = -x, putchar('-');
if (x > 9) write(x/10);
putchar('0'+x%10);
}
const int N = 2e6+5;
struct que { int op, t, x, y; } a[N];
int q, n, idx, b[N];
struct bit {
int sum, c[N];
inline void add(int x, int k) { for (; x <= n; x += x&-x) c[x] += k; sum += k; }
inline int ask_pre(int x) { int res = 0; for (; x; x -= x&-x) res += c[x]; return res; }
inline int ask_suf(int x) { return sum-ask_pre(x-1); }
} t[2];
int main() {
q = read();
for (int i = 1; i <= q; ++i) {
a[i].op = read(), a[i].t = read();
if (a[i].op == 1) a[i].x = read(), a[i].y = read(), b[++idx] = a[i].x;
}
sort(b+1, b+idx+1);
n = unique(b+1, b+idx+1)-b-1;
for (int i = 1; i <= q; ++i) if (a[i].x) a[i].x = lower_bound(b+1, b+n+1, a[i].x)-b;
for (int i = 1; i <= q; ++i) {
if (a[i].op == 1) t[a[i].t].add(a[i].x, a[i].y);
else t[a[a[i].t].t].add(a[a[i].t].x, -a[a[i].t].y);
int l = 1, r = n, p;
while (l < r) {
int mid = l+r+1>>1;
if (t[0].ask_pre(mid) < t[1].ask_suf(mid)) l = mid;
else r = mid-1;
}
p = l, l = p+1, r = n;
while (l < r) {
int mid = l+r+1>>1;
if (t[1].ask_suf(p+1) <= t[1].ask_suf(mid)) l = mid;
else r = mid-1;
}
int m1 = min(t[0].ask_pre(l), t[1].ask_suf(l)), m2 = min(t[0].ask_pre(p), t[1].ask_suf(p));
if (!max(m1, m2)) puts("Peace");
else write(b[m1 >= m2 ? l : p]), space, write(2*max(m1, m2)), enter;
}
return 0;
}