Submission #1232990

#TimeUsernameProblemLanguageResultExecution timeMemory
1232990dssfsuper2Crayfish scrivener (IOI12_scrivener)C++20
34 / 100
1098 ms119008 KiB
#include <bits/stdc++.h> using namespace std; struct state{ int curl; char curc; vector<int> bl; }; vector<state> states; state cs; state null; void Init() { cs.curl=-1; cs.curc=' '; cs.bl={}; states.push_back(cs); for(int i = 0;i<22;i++){ states.back().bl.push_back(0); } } void TypeLetter(char L) { state x; x.curl=cs.curl+1; x.curc=L; //to generate parents: first take previous, then take his first bl, then take the 2nd bl of his, etc //x.par=&states[states.size()-1]; auto temp = states[states.size()-1]; x.bl={(int)states.size()-1}; for(int i = 0;i<21;i++){ x.bl.push_back((temp.bl[i])); temp=states[temp.bl[i]]; } states.push_back(x); cs=x; } void UndoCommands(int U) { state x; x.curl=states[states.size()-U-1].curl; x.curc=states[states.size()-U-1].curc; auto temp = states[states.size()-U-1]; x.bl={(int)states.size()-U-1}; for(int i = 0;i<21;i++){ x.bl.push_back(temp.bl[i]); temp=states[temp.bl[i]]; } states.push_back(x); cs=states.back(); } char GetLetter(int P) { state tmp=cs; if(cs.curl==P){ return cs.curc; } for(int i = 21;i>=0;i--){ if(states[tmp.bl[i]].curl>P)tmp=states[tmp.bl[i]]; else if (states[tmp.bl[i]].curl==P)return states[tmp.bl[i]].curc; } }

Compilation message (stderr)

scrivener.cpp: In function 'char GetLetter(int)':
scrivener.cpp:63:1: warning: control reaches end of non-void function [-Wreturn-type]
   63 | }
      | ^
#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...