Submission #1319674

#TimeUsernameProblemLanguageResultExecution timeMemory
1319674algoproclubType Printer (IOI08_printer)C++20
100 / 100
133 ms127420 KiB
// UUID: 6be76404-ee2b-4178-931e-0c8362c1868c #include <bits/stdc++.h> using namespace std; using ll=long long; using pll=pair<ll, ll>; const ll meret=5e5; pair<ll, string> longest={0, ""}; vector<vector<ll>> trie(meret, vector<ll> (26)); vector<ll> cnt(meret); ll nodes=0; void insert(string s){ ll curr=0; for (auto& c:s){ if (trie[curr][c-'a']==0) trie[curr][c-'a']=++nodes; curr=trie[curr][c-'a']; } cnt[curr]++; } void dfs(ll curr){ for (ll i=0; i<cnt[curr]; i++) cout << "P\n"; for (ll i=0; i<26; i++){ if (trie[curr][i]!=0){ cout << char(i+'a') << '\n'; dfs(trie[curr][i]); } } cout << "-\n"; } void out(){ ll curr=0; for (auto& c:longest.second){ for (ll i=0; i<26; i++) if (i!=c-'a' && trie[curr][i]!=0){ cout << char(i+'a') << '\n'; dfs(trie[curr][i]); } cout << c << '\n'; curr=trie[curr][c-'a']; for (ll i=0; i<cnt[curr]; i++) cout << "P\n"; } } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll n; cin >> n; for (ll i=0; i<n; i++){ string s; cin >> s; insert(s); if (s.size()>longest.first){ longest.first=s.size(); longest.second=s; } } cout << nodes*2-longest.first+n << '\n'; out(); }
#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...