제출 #286624

#제출 시각아이디문제언어결과실행 시간메모리
286624amiratou크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++14
74 / 100
1006 ms124280 KiB
#pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,abm,mmx,avx") #pragma GCC optimize("unroll-loops") #pragma GCC optimize("O3") #pragma GCC target ("avx2") #include <bits/stdc++.h> using namespace std; #define pb push_back const int LOG=20,MX=(int)(1e6+1); int up[MX][LOG],d[MX],idx; char car[MX]; vector<int> vec[MX]; void Init() { } void TypeLetter(char L) { vec[idx].pb(idx+1); d[idx+1]=d[idx]+1; up[idx+1][0]=idx; for (int i = 1; i < LOG; ++i) up[idx+1][i]=up[up[idx+1][i-1]][i-1]; car[idx+1]=L; idx++; } void UndoCommands(int U) { d[idx+1]=d[idx-U]; up[idx+1][0]=up[idx-U][0]; for (int i = 1; i < LOG; ++i) up[idx+1][i]=up[up[idx+1][i-1]][i-1]; if(idx!=U){ vec[up[idx-U][0]].pb(idx+1); car[idx+1]=car[idx-U]; } idx++; } char GetLetter(int P) { int k=d[idx]-1-P,a=idx; for (int i = 0; i < LOG; ++i) if((k>>i)&1)a=up[a][i]; return car[a]; }
#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...