# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1091951 | 2024-09-22T17:11:04 Z | Salty | Type Printer (IOI08_printer) | C++14 | 11 ms | 17880 KB |
#include<bits/stdc++.h> #define ll long long #define st first #define pii pair<ll,ll> #define nd second #define pb push_back using namespace std; const int N = 5e5+10; bool CASE = false; int child[N]; int trie[N][26]; // trie[i][c] mean node number that contain character c and is a child of node i int nxt; bool stop[N]; void add(string s){ int cur = 0; for(auto u:s){ if(trie[cur][u-'a'] == 0) trie[cur][u-'a'] = ++nxt; // build new node cur = trie[cur][u-'a']; // go to next node } stop[cur] = true; // show that current node is end node } vector<char> ans; void dfs(int node){ if(stop[node]) { ans.push_back('P'); ans.push_back('-'); return; } for(int k = 0; k < 26; k++){ if(trie[node][k] == 0) continue; ans.push_back(k+'a'); dfs(trie[node][k]); } ans.push_back('-'); return; } void dfs2(int node){ child[node] = 1; if(stop[node]) return; for(int k = 0; k < 26; k++){ if(trie[node][k] == 0) continue; dfs2(trie[node][k]); child[node] += child[trie[node][k]]; } return; } void solve (){ ll n,k; cin >> n; vector<string> v(n); for(int i = 0; i < n; i++){ cin >> v[i]; add(v[i]); } vector<pair<int,int>> start; for(int i = 0; i < 26; i++) if(trie[0][i]) {dfs2(trie[0][i]); start.push_back({child[trie[0][i]],i});} sort(start.begin(),start.end()); for(auto i:start){ if(trie[0][i.second]) { ans.push_back(i.second+'a'); dfs(trie[0][i.second]); } } while(ans.back() == '-') ans.pop_back(); cout << ans.size() << "\n"; for(auto u:ans){ cout << u << "\n"; } } int main(){ ios_base::sync_with_stdio(false);cin.tie(0); int t = 1; if(CASE) cin >> t; while(t--) { solve(); } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 344 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 348 KB | didn't print every word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 600 KB | Output is correct |
2 | Incorrect | 0 ms | 348 KB | didn't print every word |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 344 KB | didn't print every word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 1116 KB | didn't print every word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 3164 KB | didn't print every word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 5 ms | 7260 KB | didn't print every word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 11 ms | 17880 KB | didn't print every word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 9 ms | 14172 KB | didn't print every word |
2 | Halted | 0 ms | 0 KB | - |