Submission #226389

#TimeUsernameProblemLanguageResultExecution timeMemory
226389shahriarkhanType Printer (IOI08_printer)C++14
80 / 100
1100 ms50228 KiB
#include<bits/stdc++.h> using namespace std ; const int maxN = 5e5 + 5 ; int nex[maxN][26] , ed[maxN] , mark[maxN] , sz ; vector<char> ans ; void insert_string(string &s) { int v = 0 , siz = s.size() ; for(int i = 0 ; i < siz ; ++i) { int c = s[i] - 'a' ; if(!nex[v][c]) nex[v][c] = ++sz ; v = nex[v][c] ; } ++ed[v] ; } void dfs(int ind) { int marked = 0 , in ; while(ed[ind]) ans.push_back('P') , --ed[ind] ; for(int i = 0 ; i < 26 ; ++i) { if(mark[nex[ind][i]]) { marked = nex[ind][i] , in = i ; continue ; } if(nex[ind][i]) { char c = 'a' + i ; ans.push_back(c) ; dfs(nex[ind][i]) ; } } if(marked) { char c = 'a' + in ; ans.push_back(c) ; dfs(marked) ; } if(ind) ans.push_back('-') ; } bool cmp(string &s , string &t) { return s.size()<t.size() ; } int main() { int n ; scanf("%d",&n) ; vector<string> vs ; for(int i = 0 ; i < n ; ++i) { string s ; cin>>s ; vs.push_back(s) ; } sort(vs.begin(),vs.end(),cmp) ; for(int i = 0 ; i < n - 1 ; ++i) insert_string(vs[i]) ; int v = 0 , siz = vs[n-1].size() ; for(int i = 0 ; i < siz ; ++i) { int c = vs[n-1][i] - 'a' ; if(!nex[v][c]) nex[v][c] = ++sz ; v = nex[v][c] ; mark[v] = 1 ; } ++ed[v] ; dfs(0) ; int siza = ans.size() ; while(ans[siza-1]!='P') --siza ; printf("%d\n",siza) ; for(int i = 0 ; i < siza ; ++i) cout<<ans[i]<<endl ; return 0 ; }

Compilation message (stderr)

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