Submission #1255434

#TimeUsernameProblemLanguageResultExecution timeMemory
1255434mngoc._.Type Printer (IOI08_printer)C++20
0 / 100
242 ms82996 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int NUMBEROFNODE = 2e6 + 5; vector<char> ans; int res = 0; int n; vector<pair<int , int>> adj[NUMBEROFNODE]; int m; int sz[NUMBEROFNODE]; int mx = NUMBEROFNODE - 1; string rem; struct Trie{ struct NODE{ int child[26]; int exist , cnt; } nodes[NUMBEROFNODE]; int cur; Trie() : cur(0){ memset(nodes[0].child , -1 , sizeof(nodes[0].child)); nodes[0].exist = nodes[0].cnt = 0; }; int new_node(){ cur++; memset(nodes[cur].child , -1 , sizeof(nodes[cur].child)); nodes[cur].cnt = nodes[cur].exist = 0; return cur; } void add_string(string s){ int pos = 0; for(auto f : s){ int c = f - 'a'; if(nodes[pos].child[c] == -1){ nodes[pos].child[c] = new_node(); } pos = nodes[pos].child[c]; nodes[pos].cnt++; } nodes[pos].exist++; } void dfs(int h , int u , bool emconhoanhko){ if(nodes[u].exist){ cout << 'P' << endl; } for(int i = 0 ; i < 26 ; i++){ if(nodes[u].child[i] == -1 || (emconhoanhko && i == rem[h] - 'a')) continue; cout << char(i + 'a') << endl; dfs(h + 1 , nodes[u].child[i] , 0); } if(emconhoanhko && h < rem.size() && nodes[u].child[h - 'a'] != -1){ cout << rem[h] << endl; dfs(h + 1 , nodes[u].child[rem[h] - 'a'] , 1); return; } if(!emconhoanhko) cout << '-' << endl; } } trie; void solve(void){ cin >> n; for(int i = 1; i <= n ; i++){ string s; cin >> s; trie.add_string(s); if(s.size() > rem.size()) rem = s; } cout << trie.cur * 2 + n - rem.size() << endl; trie.dfs(0 , 0 , 1); } signed main(void){ ios_base :: sync_with_stdio(false); cin.tie(NULL); solve(); 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...