제출 #235576

#제출 시각아이디문제언어결과실행 시간메모리
235576nicolaalexandraType Printer (IOI08_printer)C++14
100 / 100
221 ms100332 KiB
#include <bits/stdc++.h> //#define DIM 25010 nu inteleg de ce uneori iau eroare de la define //#define MOD 666013 using namespace std; const int MOD = 66617; const int DIM = 25010; char v[DIM][22],s[22]; vector <char> sol; pair <int,int> lg[DIM]; int n,i,j,cod,cnt,k; struct trie{ int nr,maxi; trie *f[26]; trie(){ nr = maxi = 0; for (int i=0;i<26;i++) f[i] = 0; } }; trie *rad = new trie; void add_trie (trie *&rad, char *s){ if (*s != 0){ if (rad->f[*s - 'a'] == 0) rad->f[*s - 'a'] = new trie; add_trie (rad->f[*s - 'a'],s+1); rad->maxi = max (rad->maxi, rad->f[*s - 'a']->maxi + 1); } else rad->nr++; } void dfs (trie *&rad){ while (rad->nr){ sol.push_back('P'); rad->nr--; cnt++; } if (cnt == n) return; int maxi = 0; for (int i=0;i<26;i++) if (rad->f[i] && rad->f[i]->maxi > maxi) maxi = rad->f[i]->maxi; for (int i=0;i<26;i++) if (rad->f[i] && rad->f[i]->maxi != maxi){ sol.push_back('a' + i); dfs (rad->f[i]); } for (int i=0;i<26;i++) if (rad->f[i] && rad->f[i]->maxi == maxi){ sol.push_back('a' + i); dfs (rad->f[i]); } if (cnt != n) sol.push_back('-'); } int main (){ //ifstream cin ("date.in"); //ofstream cout ("date.out"); /// probabil nu e bn dar csf cin>>n; for (i=1;i<=n;i++){ cin>>v[i]; lg[i] = make_pair(strlen (v[i]),i); } sort (lg+1,lg+n+1); for (i=1;i<=n;i++){ int idx = lg[i].second; add_trie (rad,v[idx]); } dfs (rad); cout<<sol.size()<<"\n"; for (auto it : sol) cout<<it<<"\n"; return 0; }
#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...