Submission #1312774

#TimeUsernameProblemLanguageResultExecution timeMemory
1312774penguin133돌 무게 재기 (IZhO11_stones)C++20
100 / 100
125 ms9968 KiB
// 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 timeMemoryGrader output
Fetching results...