# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
222914 | 2020-04-14T10:44:50 Z | miello | Type Printer (IOI08_printer) | C++11 | 258 ms | 101224 KB |
#include <bits/stdc++.h> using namespace std; const int MXN = 25005; struct node { bool finalword = false , need = false; struct node* alpha[26]; node() { for(int i = 0 ; i < 26 ; i++){ this->alpha[i] = nullptr; } } }; vector<char> ans; vector<string> s; void insert(node* now , string s , int idx , bool fin) { if(s.size() == idx) { now->need = true; return; } if(now->alpha[s[idx] - 'a'] == nullptr){ now->alpha[s[idx] - 'a'] = new node(); now->alpha[s[idx] - 'a']->finalword = fin; } insert(now->alpha[s[idx] - 'a'] , s , idx + 1 , fin); } void dfs(node* now) { if(now->need) { ans.push_back('P'); } for(int i = 0 ; i < 26 ; i++){ if(now->alpha[i] != nullptr) { if(!now->alpha[i]->finalword) { ans.push_back('a' + i); dfs(now->alpha[i]); ans.push_back('-'); } } } for(int i = 0 ; i < 26 ; i++){ if(now->alpha[i] != nullptr) { if(now->alpha[i]->finalword) { ans.push_back('a' + i); dfs(now->alpha[i]); } } } } int main(){ int n; scanf("%d" ,&n); for(int i = 0 ; i < n ; i++){ string a; cin >> a; s.push_back(a); } sort(s.begin() , s.end() , [](string a , string b) { return a.size() > b.size(); }); node* root = new node(); for(int i = 0 ; i < n ; i++) { if(i == 0) { insert(root, s[i], 0, true); continue; } insert(root, s[i], 0, false); } // printf("%d" ,root->alpha['p' - 'a']->alpha['r' - 'a']->finalword); dfs(root); printf("%d\n", ans.size()); for(auto i : ans) { printf("%c\n" ,i); } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 256 KB | Output is correct |
2 | Correct | 5 ms | 256 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 384 KB | Output is correct |
2 | Correct | 6 ms | 384 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 384 KB | Output is correct |
2 | Correct | 5 ms | 384 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 384 KB | Output is correct |
2 | Correct | 5 ms | 384 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 384 KB | Output is correct |
2 | Correct | 7 ms | 1152 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 8 ms | 1920 KB | Output is correct |
2 | Correct | 9 ms | 2304 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 19 ms | 6144 KB | Output is correct |
2 | Correct | 37 ms | 12788 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 43 ms | 15308 KB | Output is correct |
2 | Correct | 32 ms | 3960 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 111 ms | 37736 KB | Output is correct |
2 | Correct | 217 ms | 85100 KB | Output is correct |
3 | Correct | 149 ms | 45036 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 92 ms | 29928 KB | Output is correct |
2 | Correct | 258 ms | 101224 KB | Output is correct |
3 | Correct | 168 ms | 51048 KB | Output is correct |
4 | Correct | 251 ms | 95716 KB | Output is correct |