Submission #1213566

#TimeUsernameProblemLanguageResultExecution timeMemory
1213566leandroioileleType Printer (IOI08_printer)C++20
0 / 100
94 ms38420 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define faster ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define NMAX 25005 #define pb push_back #define fi first #define se second int n; struct gamb{ int tam; char c; }; struct node{ unordered_map<char,int>next; int id; int tam; char c; node(){ id=-1; next.clear(); tam=0; } }; vector<node>v; string resp; int espaco=0; int new_node(){ v.pb(node()); return v.size()-1; } void dfs(int x){ for(auto it:v[x].next){ dfs(v[x].next[it.fi]); v[x].tam+=(v[v[x].next[it.fi]].tam+1); } if(v[x].id==1){ v[x].tam=1; } } void solve(int x){ vector<gamb>g; gamb aux2; if(x!=0){ espaco++; resp.pb(v[x].c); if(v[x].id==1){ resp.pb('P'); while(espaco--)resp.pb('-'); } } for(auto it:v[x].next){ aux2.c=it.fi; aux2.tam=v[v[x].next[it.fi]].tam; g.pb(aux2); } reverse(g.begin(),g.end()); for(auto it:g){ solve(v[x].next[it.c]); } } vector<string>s; bool func(string a, string b){ if(a.size()!=b.size())return a.size()<b.size(); return a<b; } int32_t main(){ cin>>n; int x; int inicio=new_node(); for(int i=0; i<n; i++){ s.pb("penis"); cin>>s[i]; } sort(s.begin(),s.end(),func); for(int i=0; i<n; i++){ x=inicio; for(auto it:s[i]){ if(v[x].next.count(it)==0){ v[x].next[it]=new_node(); } x=v[x].next[it]; v[x].c=it; } v[x].id=1; } dfs(inicio); solve(inicio); char aooo=resp.back(); while(aooo=='-'){ resp.pop_back(); aooo=resp.back(); } cout<<resp.size()<<"\n"; for(auto it:resp)cout<<it<<"\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...