Submission #931428

#TimeUsernameProblemLanguageResultExecution timeMemory
931428AlphaMale06Crayfish scrivener (IOI12_scrivener)C++17
0 / 100
2550 ms262144 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back struct node{ char c; int lc, rc; }; vector<node> st; vector<int> roots; int nxtind[1000010]; int cntop=0; void Build(int v, int l, int r){ if(l>r)return; if(l==r){ st.pb({0, -1, -1}); return; } int mid=l+r>>1; st.pb({0, 2*v+1, 2*v+2}); Build(2*v+1, l, mid); Build(2*v+2, mid+1, r); } void Add(int v, int l, int r, char c){ if(l==r){ st.pb({c, -1, -1}); return; } int mid=l+r>>1; st.pb(st[v]); if(mid>=nxtind[cntop]){ st[st.size()-1].lc=st.size(); Add(st.size(), l, mid, c); } else{ st[st.size()-1].rc=st.size(); Add(st.size(), mid+1, r, c); } } char Get(int v, int l, int r, int ind){ if(l==r)return st[v].c; int mid=l+r>>1; if(ind<=mid)return Get(st[v].lc, l, mid, ind); return Get(st[v].rc, mid+1, r, ind); } void TypeLetter(char c) { int nw=st.size(); Add(roots.back(), 0, 1000010, c); roots.pb(nw); cntop++; nxtind[cntop]=nxtind[cntop-1]+1; } void UndoCommands(int num) { roots.pb(roots[roots.size()-num-1]); cntop++; nxtind[cntop]=nxtind[cntop-num-1]; } char GetLetter(int ind) { return Get(roots.back(), 0, 1000010, ind); } void Init() { Build(0, 0, 1000010); roots.pb(0); nxtind[0]=0; }

Compilation message (stderr)

scrivener.cpp: In function 'void Build(int, int, int)':
scrivener.cpp:23:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   23 |     int mid=l+r>>1;
      |             ~^~
scrivener.cpp: In function 'void Add(int, int, int, char)':
scrivener.cpp:35:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   35 |    int mid=l+r>>1;
      |            ~^~
scrivener.cpp: In function 'char Get(int, int, int, int)':
scrivener.cpp:49:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   49 |     int mid=l+r>>1;
      |             ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...