Submission #846588

#TimeUsernameProblemLanguageResultExecution timeMemory
846588AndriaBeridzeWeighting stones (IZhO11_stones)C++14
100 / 100
186 ms10816 KiB
#include<bits/stdc++.h> using namespace std; int TC = 0; void dbg_out() {cout << endl;} template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) {cout << " " << H; dbg_out(T...);} #define debug(...) {cout << "(" << #__VA_ARGS__ << "):"; dbg_out(__VA_ARGS__);} #define IOS ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); #define int long long #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define add push_back #define size(v) (int) v.size() #define left node * 2, l, (l + r) / 2 #define right node * 2 + 1, (l + r) / 2 + 1, r #define check() cout << "Why doesn't this stupid a** code work?" << endl; #define inf (int) 1e18 vector<pair<int, int>> t(400005, {0, 0}); vector<int> p(400005, 0); void update(int node, int l, int r, int L, int R, int val){ if(l > R || L > r) return; if(L <= l && r <= R){ p[node] += val; return; } t[node].first += p[node], t[node].second += p[node]; p[node * 2] += p[node]; p[node * 2 + 1] += p[node]; p[node] = 0; update(left, L, R, val); update(right, L, R, val); t[node].first = min(t[node * 2].first + p[node * 2], t[node * 2 + 1].first + p[node * 2 + 1]); t[node].second = max(t[node * 2].second + p[node * 2], t[node * 2 + 1].second + p[node * 2 + 1]); } void solve(){ int n; cin >> n; for(int i = 1; i <= n; i++){ int r, s; cin >> r >> s; int k = (s == 1 ? 1 : -1); update(1, 1, n, 1, r, k); if((t[1].first + p[1]) * (t[1].second + p[1]) < 0){ cout << "?\n"; } else if((t[1].first + p[1]) > 0 || (t[1].second + p[1]) > 0){ cout << ">\n"; } else{ cout << "<\n"; } } } signed main(){ int q = 1; //cin >> q; while(++TC <= q){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...