Submission #287382

#TimeUsernameProblemLanguageResultExecution timeMemory
287382NamnamseoType Printer (IOI08_printer)C++17
100 / 100
152 ms99576 KiB
#include <cstdio> int max(int a,int b){ return a>b?a:b; } struct node { node *nxt[26]; bool term; int deepest; node(){ term=0; int i; for(i=0;i<26;++i) nxt[i]=0; deepest=0; } void put(char* x) { if(*x){ if(!nxt[(*x)-'a']) nxt[(*x)-'a']=new node(); nxt[(*x)-'a']->put(x+1); deepest=max(deepest,nxt[(*x)-'a']->deepest+1); } else term=1; } }; char ans[2000010]; int top; void dfs(node* cur) { int i; int mi=-1; for(i=0;i<26;++i){ if(cur->nxt[i]){ if(mi==-1 || ((cur->nxt[mi]->deepest)<(cur->nxt[i]->deepest))) mi=i; } } if(cur->term) ans[top++]='P'; if(mi!=-1) { for(i=0;i<26;++i){ if(i==mi) continue; if(cur->nxt[i]){ ans[top++]=('a'+i); dfs(cur->nxt[i]); ans[top++]='-'; } } ans[top++]=('a'+mi); dfs(cur->nxt[mi]); ans[top++]='-'; } } char buf[30]; node *root; int main() { root=new node(); int n; scanf("%d",&n); for(;n--;){ scanf("%s",buf); root->put(buf); } dfs(root); int i; while(top && ans[top-1]=='-') --top; printf("%d\n",top); for(i=0;i<top;++i){ putchar(ans[i]); putchar(10); } return 0; }

Compilation message (stderr)

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