Submission #63009

#TimeUsernameProblemLanguageResultExecution timeMemory
63009theknife2001Crayfish scrivener (IOI12_scrivener)C++17
Compilation error
0 ms0 KiB
#include <stdlib.h> #include <stdio.h> #include <assert.h> #define inbuf_len 1 << 16 #define outbuf_len 1 << 16 #include <bits/stdc++.h> using namespace std; const int N=1e6+55; int trie[N*2][26]; char letter[N]; int p[N][22]; int a[N]; int l[N]; int node; int cnt=1; int k=1; void Init() { node=cnt++; } int c,temp,nd; void TypeLetter(char L) { c=L-'a'; temp=node; if(trie[node][c]==0) trie[node][c]=cnt++; node=trie[node][c]; letter[node]=L; a[k]=node; l[k]=l[k-1]+1; if(p[node][0]==0) { p[node][0]=temp; for(int i=1;i<21;i++) { p[node][i]=p[p[node][i-1]][i-1]; if(p[node][i]==0) break; } } k++; } void UndoCommands(int U) { node=a[k-U-1]; l[k]=l[k-U-1]; a[k]=node; k++; } char GetLetter(int P) { P=l[k-1]-P-1; nd=node; for(int i=20;i>=0;i--) { if((P&(1<<i))) nd=p[nd][i]; } return letter[nd]; } int main() { Init(); int cmd_num; int tmp=1; tmp = scanf("%d", &cmd_num); assert(tmp == 1); int i; for (i = 0; i < cmd_num; i++) { char cmd; tmp = scanf(" %c", &cmd); assert(tmp == 1); if (cmd == 'T') { char letter; tmp = scanf(" %c", &letter); assert(tmp == 1); TypeLetter(letter); } else if (cmd == 'U') { int number; tmp = scanf("%d", &number); assert(tmp == 1); UndoCommands(number); } else if (cmd == 'P') { int index; char letter; tmp = scanf("%d", &index); assert(tmp == 1); letter = GetLetter(index); printf("%c\n", letter); } } return 0; }

Compilation message (stderr)

/tmp/ccQ45AM6.o: In function `main':
scrivener.cpp:(.text.startup+0x0): multiple definition of `main'
/tmp/cc0GsqHL.o:grader.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status