// Source: https://usaco.guide/general/io
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct node{
int s, e, m, suf, mxs, mns;
node *l, *r;
node (int _s, int _e) {
s = _s, e = _e, m = (s + e) >> 1;
if (s != e) {
l = new node(s, m);
r = new node(m + 1, e);
}
suf = mxs = mns = 0;
}
void upd(int p, int v){
if (s == e) {
suf = mxs = mns = v;
return;
}
if (p <= m) l->upd(p, v);
else r->upd(p, v);
suf = l->suf + r->suf;
mxs = max(r->mxs, r->suf + l->mxs);
mns = min(r->mns, r->suf + l->mns);
}
}*root;
int main() {
int n; cin >> n;
root = new node(1, n);
for (int i = 1; i <= n; i++) {
int a, b; cin >> a >> b;
if (b == 1) root->upd(a, 1);
else root->upd(a, -1);
if (root->mns >= 0) cout << ">\n";
else if (root->mxs <= 0) cout << "<\n";
else cout << "?\n";
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |