# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1022624 | 2024-07-13T19:37:50 Z | subrat0018 | Type Printer (IOI08_printer) | C++17 | 1000 ms | 145956 KB |
#include <bits/stdc++.h> using namespace std; #define nline "\n" class Node{ public: bool word; vector<Node*> links; Node(){ word = false; links.resize(26, nullptr); } }; class Trie{ public: Node *root; Trie(){ root = new Node(); } void insert(string &s){ Node *node = root; for(auto &val: s){ if(!node->links[val - 'a']){ node->links[val - 'a'] = new Node(); } node = node->links[val - 'a']; } node->word = true; } }; vector<char> ans; map<Node *, int> height; void dfs(Node *n){ if(!n) return; height[n] = 1; for(int i=0;i<26;i++){ if(n->links[i]){ dfs(n->links[i]); height[n] = max(height[n], 1 + height[n->links[i]]); } } } Node *curr; bool cmp(int i, int j){ return height[curr->links[i]] < height[curr->links[j]]; } void dfs2(Node *n){ if(!n) return; if(n->word){ ans.push_back('P'); } int arr[26]; curr = n; iota(arr, arr+26, 0); sort(arr, arr+26,cmp); for(int i=0;i<26;i++){ if(!n->links[arr[i]])continue; ans.push_back(arr[i] + 'a'); dfs2(n->links[arr[i]]); ans.push_back('-'); } } void solve() { int n;cin>>n; Trie t; for(int i=0;i<n;i++){ string s; cin>>s; t.insert(s); } dfs(t.root); dfs2(t.root); while(ans.size() && ans.back() == '-')ans.pop_back(); cout<<ans.size()<<nline; for(auto &val: ans) cout<<val<<nline; } int main() { #ifndef ONLINE_JUDGE freopen("debug.txt", "w", stderr); #endif ios_base::sync_with_stdio(false); cin.tie(NULL); int t = 1; // cin>>t; // prec(); for (int i = 1; i <= t; i++) { // cout<<"Case "<<i<<": "; solve(); } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 348 KB | Output is correct |
2 | Correct | 0 ms | 456 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 | Correct | 1 ms | 348 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 348 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 604 KB | Output is correct |
2 | Correct | 9 ms | 1628 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 17 ms | 2692 KB | Output is correct |
2 | Correct | 24 ms | 3284 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 71 ms | 8788 KB | Output is correct |
2 | Correct | 157 ms | 18388 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 209 ms | 21720 KB | Output is correct |
2 | Correct | 38 ms | 4828 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 578 ms | 54220 KB | Output is correct |
2 | Execution timed out | 1056 ms | 122916 KB | Time limit exceeded |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 440 ms | 42384 KB | Output is correct |
2 | Execution timed out | 1025 ms | 145956 KB | Time limit exceeded |
3 | Halted | 0 ms | 0 KB | - |