Submission #958219

#TimeUsernameProblemLanguageResultExecution timeMemory
958219yeediotWeighting stones (IZhO11_stones)C++17
100 / 100
37 ms3920 KiB
#include<bits/stdc++.h> using namespace std; const int mxn=1e5+5; struct node{ int mx,mn; }; node operator +(node a,node b){ return {a.mx>b.mx?a.mx:b.mx,a.mn<b.mn?a.mn:b.mn}; } int n; struct segtree{ node seg[4*mxn]; int tag[4*mxn]; void add(int id,int v){ seg[id].mx+=v; seg[id].mn+=v; tag[id]+=v; } void push(int id){ if(tag[id]==0) return; add(id*2,tag[id]); add(id*2+1,tag[id]); tag[id]=0; } void modify(int l,int r,int id,int ql,int qr,int v){ if(qr<l or r<ql) return; if(ql<=l and r<=qr){ add(id,v); return; } int mm=l+r>>1; push(id); modify(l,mm,id*2,ql,qr,v); modify(mm+1,r,id*2+1,ql,qr,v); seg[id]=seg[id*2]+seg[id*2+1]; } void modify(int l,int r,int v){ modify(1,n,1,l,r,v); } }tr; signed main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n; for(int i=1;i<=n;i++){ int c,s; cin>>c>>s; s=(s==1?1:-1); tr.modify(1,c,s); if(tr.seg[1].mn>=0) cout<<">\n"; else if(tr.seg[1].mx<=0) cout<<"<\n"; else cout<<"?\n"; } }

Compilation message (stderr)

stones.cpp: In member function 'void segtree::modify(int, int, int, int, int, int)':
stones.cpp:33:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   33 |         int mm=l+r>>1;
      |                ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...