Submission #337747

#TimeUsernameProblemLanguageResultExecution timeMemory
337747amunduzbaevWeighting stones (IZhO11_stones)C++14
0 / 100
1 ms364 KiB
/** made by amunduzbaev **/ #include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define vll vector<ll> #define vii vector<int> const int N = 1e5+5; const int mod = 1e9+7; const ll inf = 1e18; const ld Pi = acos(-1); ll n, m, k, ans, s; struct node{ bool flag; ll mx, mn, v; }; node def; vector<node> tree; void push(int x, int lx, int rx){ if(lx == rx){ tree[x].flag = 0, tree[x].v = 0; return; } if(!tree[x].flag) return; tree[(x<<1)].flag = tree[(x<<1)+1].flag = 1; tree[(x<<1)].v = tree[(x<<1)+1].v = tree[x].v; tree[(x<<1)].mn += tree[x].v; tree[(x<<1)].mx += tree[x].v; tree[(x<<1)+1].mn += tree[x].v; tree[(x<<1)+1].mx += tree[x].v; tree[x].v = tree[x].flag = 0; tree[x].mn = min(tree[(x<<1)].mn, tree[(x<<1)+1].mn); tree[x].mx = max(tree[(x<<1)].mx, tree[(x<<1)+1].mx); } void sett(int l, int r, ll v, int lx, int rx, int x){ //cout<<l<<" "<<r<<" "<<lx<<" "<<rx<<endl; if(lx > r || rx < l) return; push(x, lx, rx); if(lx >= l && rx <= r) { tree[x].flag = 1; tree[x].mn += v; tree[x].mx += v; tree[x].v = v; return ; } int m = (lx + rx)>>1; sett(l, r, v, lx, m, (x<<1)); sett(l, r, v, m+1, rx, (x<<1)+1); tree[x].mn = min(tree[(x<<1)].mn, tree[(x<<1)+1].mn); tree[x].mx = max(tree[(x<<1)].mx, tree[(x<<1)+1].mx); } void solve(){ fastios cin>>n; s = 2; while(s < n) s<<=1; def.flag = 0, def.mn = 0, def.mx = 0, def.v = 0; tree.assign(s*2, def); for(int i=0;i<n;i++){ cin>>m>>k; sett(1, m, (k == 1 ? -1 : 1), 1, s, 1); ll mx = tree[1].mx; ll mn = tree[1].mn; if(mn >= 0) cout<<"<\n"; else if(mx <= 0) cout<<">\n"; else cout<<"?\n"; } return; } int main(){ fastios int t = 1; if(t) solve(); else { cin>>t; while (t--) solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...