# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1000129 | 2024-06-16T17:16:32 Z | amin_2008 | Type Printer (IOI08_printer) | C++17 | 983 ms | 154812 KB |
#include "bits/stdc++.h" using namespace std; #define int long long const int sz = 18e5 + 5; const int inf = 1e18; int trie[sz][26]; int depth[sz]; int leaf[sz]; int nxt = 0, cnt = 0; char ch[sz]; vector<int> adj[sz]; vector<char> res; int n; struct Trie { void add(string s) { int root = 0; for(int i = 0; i < s.size(); i++) { int child = s[i] - 'a'; if (!trie[root][child]) { trie[root][child] = ++nxt; adj[root].push_back(trie[root][child]); ch[trie[root][child]] = s[i]; } root = trie[root][child]; depth[root] = max(depth[root], (int)s.size() - i); } leaf[root] = true; } void dfs(int node) { if (node) res.push_back(ch[node]); if (leaf[node]) res.push_back('P'), cnt++; for(int to : adj[node]) dfs(to); if (cnt != n) res.push_back('-'); } }; void solve() { cin >> n; Trie tree; for(int i = 1; i <= n; i++) { string s; cin >> s; tree.add(s); } for(int i = 0; i <= nxt; i++) sort(adj[i].begin(), adj[i].end(), [&](int a, int b) { return depth[a] < depth[b]; }); tree.dfs(0); cout << res.size() << endl; for(char c : res) cout << c << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t = 1; // cin >> t; for(int i = 1; i <= t; i++) solve(); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 14 ms | 42588 KB | Output is correct |
2 | Correct | 16 ms | 42584 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 42588 KB | Output is correct |
2 | Correct | 14 ms | 42588 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 42684 KB | Output is correct |
2 | Correct | 13 ms | 42588 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 14 ms | 42584 KB | Output is correct |
2 | Correct | 14 ms | 42584 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 15 ms | 42840 KB | Output is correct |
2 | Correct | 25 ms | 43608 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 28 ms | 44380 KB | Output is correct |
2 | Correct | 32 ms | 44944 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 68 ms | 48988 KB | Output is correct |
2 | Correct | 158 ms | 56400 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 152 ms | 58844 KB | Output is correct |
2 | Correct | 53 ms | 45916 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 409 ms | 83664 KB | Output is correct |
2 | Correct | 804 ms | 136904 KB | Output is correct |
3 | Correct | 421 ms | 90832 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 301 ms | 74444 KB | Output is correct |
2 | Correct | 983 ms | 154812 KB | Output is correct |
3 | Correct | 475 ms | 97484 KB | Output is correct |
4 | Correct | 853 ms | 148592 KB | Output is correct |