Submission #1114786

#TimeUsernameProblemLanguageResultExecution timeMemory
1114786PetrixWeighting stones (IZhO11_stones)C++17
0 / 100
1 ms336 KiB
#include <fstream> using namespace std; ifstream cin("stones.in"); ofstream cout("stones.out"); struct struct_aint{ int sum,pref_min,pref_max; }; struct_aint v[400001]; struct_aint combin(struct_aint a,struct_aint b){ struct_aint rasp; rasp.pref_min=min(a.pref_min,a.sum+b.pref_min); rasp.pref_max=max(a.pref_max,a.sum+b.pref_max); rasp.sum=a.sum+b.sum; return rasp; } void update(int nod,int st,int dr,int poz,int a){ if(st==dr){ v[nod].sum=a; v[nod].pref_min=min(0,a); v[nod].pref_max=max(0,a); return ; } int mij=(st+dr)/2; if(mij>poz) update(2*nod,st,mij,poz,a); else update(2*nod+1,mij+1,dr,poz,a); v[nod]=combin(v[2*nod],v[2*nod+1]); } signed main() { int n,i,poz,a; cin>>n; for(i=1;i<=n;i++){ cin>>a>>poz; if(poz==1) update(1,1,n,n-a+1,-1); else update(1,1,n,n-a+1,1); if(v[1].pref_min<0 && v[1].pref_max>0) cout<<"?\n"; else if(v[1].pref_max<=0) cout<<">\n"; else cout<<"<\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...