Submission #1214574

#TimeUsernameProblemLanguageResultExecution timeMemory
1214574Malix크레이피쉬 글쓰는 기계 (IOI12_scrivener)C++20
100 / 100
737 ms127628 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<int,int,int> ti; typedef vector<ll> li; typedef vector<li> lii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define S second #define PB push_back #define LSOne(s) ((s)&(-s)) ll INF=1000000000000000010; int inf=1e9+10; ll M=1e9+7; vector<char> b; int pos=1,mx=1000010,k; vii p; vi arr,d; void Init() { k=log2(mx)+1; p.resize(mx,vi(k,-1)); b.resize(mx);d.resize(mx); d[0]=-1;arr.PB(0); REP(i,0,mx)p[i][0]=i; } void TypeLetter(char L) { int x=arr.back(); p[pos][0]=x; REP(j,1,k)if(p[pos][j-1]!=-1)p[pos][j]=p[p[pos][j-1]][j-1]; b[pos]=L; d[pos]=d[x]+1; arr.PB(pos); pos++; } void UndoCommands(int U) { int y=arr.size(); arr.PB(arr[y-U-1]); } char GetLetter(int P) { int x=arr.back(); int y=d[x]; int z=y-P; while(z){ int t=LSOne(z); x=p[x][log2(t)]; z-=t; } return b[x]; }
#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...