Submission #74728

#TimeUsernameProblemLanguageResultExecution timeMemory
74728goodbatonType Printer (IOI08_printer)C++14
100 / 100
159 ms63772 KiB
#include <iostream> #include <vector> #include <algorithm> #include <cstdio> #include <cassert> #include <cstring> using namespace std; typedef long long ll; #define SIZE 25010 struct NODE{ int child[26]; int max; bool fin; NODE(){ for(int i=0;i<26;i++) child[i] = -1; max = 0; fin = false; } }; NODE node[SIZE*21]; int node_size = 1; char ans[SIZE*42]; int ans_size = 0; int add(char *s,int now=0,int depth=0){ if(s[depth]=='\0'){ node[now].max = max(node[now].max,depth); node[now].fin = true; return node[now].max; } int next_c = s[depth]-'a'; if(node[now].child[next_c]==-1){ node[now].child[next_c] = node_size; node_size++; } node[now].max = max(node[now].max, add(s,node[now].child[next_c],depth+1) ); return node[now].max; } bool fin = false; int counter = 0; void solve(int now=0){ if(node[now].fin) ans[ans_size++] = 'P'; counter++; for(int i=0;i<26;i++){ if(node[now].child[i]==-1) continue; int to = node[now].child[i]; if(node[now].max != node[to].max){ ans[ans_size++] = 'a'+i; solve(to); } } for(int i=0;i<26;i++){ if(node[now].child[i]==-1) continue; int to = node[now].child[i]; if(node[now].max == node[to].max){ ans[ans_size++] = 'a'+i; solve(to); } } if(counter!=node_size) ans[ans_size++] = '-'; } int main(){ int n; char word[25]; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%s",word); add(word); } solve(); printf("%d\n",ans_size); for(int i=0;i<ans_size;i++){ printf("%c\n",ans[i]); } return 0; }

Compilation message (stderr)

printer.cpp: In function 'int main()':
printer.cpp:88:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&n);
   ~~~~~^~~~~~~~~
printer.cpp:91:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%s",word);
     ~~~~~^~~~~~~~~~~
#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...
#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...