# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
589811 | 2022-07-05T09:56:22 Z | proma | Type Printer (IOI08_printer) | C++17 | 141 ms | 51716 KB |
#include <bits/stdc++.h> //#define int long long #define see(x) cout<<#x<<"="<<x<<endl; #define endl "\n" using namespace std; const int N = 250005; const int UP = 5*1e5+5; int n, s; // trie int t[30][UP], lng[UP], f[UP], nxt = 0; void add(string &word) { int cur = 0; for (int i = 0; i < word.size(); i ++) { int j = word[i] - 97; if (!t[j][cur]) t[j][cur] = ++ nxt; cur = t[j][cur]; lng[cur] = max(lng[cur], (int)word.size()); if (i == int(word.size()) - 1) f[cur] = 1; } } string ans = ""; void dfs(int v) { if (f[v]) { ans += "P"; } int mx = 0, to = -1; for (int i = 0; i < 26; i ++) { if (t[i][v] and mx < lng[t[i][v]]) { mx = lng[t[i][v]]; to = i; } } for (int i = 0; i < 26; i ++) { if (to == i) continue; if (t[i][v]) { char c = i + 97; ans += c; dfs(t[i][v]); } } if (to != -1) { char c = to + 97; ans += c; dfs(t[to][v]); } ans += "-"; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 0; i < n; i ++) { string s; cin >> s; add(s); } dfs(0); int i; for (i = int(ans.size()) - 1; i >= 0; i --) { if (ans[i] != '-') break; } cout << i + 1 << endl; for (int j = 0; j <= i; j ++) { cout << ans[j] << endl; } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 468 KB | Output is correct |
2 | Correct | 0 ms | 340 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 468 KB | Output is correct |
2 | Correct | 0 ms | 468 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 468 KB | Output is correct |
2 | Correct | 1 ms | 468 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 468 KB | Output is correct |
2 | Correct | 0 ms | 340 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 596 KB | Output is correct |
2 | Correct | 2 ms | 852 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 1276 KB | Output is correct |
2 | Correct | 3 ms | 1492 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 8 ms | 3412 KB | Output is correct |
2 | Correct | 19 ms | 6916 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 26 ms | 7976 KB | Output is correct |
2 | Correct | 8 ms | 2216 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 52 ms | 19100 KB | Output is correct |
2 | Correct | 110 ms | 43580 KB | Output is correct |
3 | Correct | 65 ms | 22764 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 46 ms | 15084 KB | Output is correct |
2 | Correct | 141 ms | 51716 KB | Output is correct |
3 | Correct | 71 ms | 25856 KB | Output is correct |
4 | Correct | 118 ms | 48940 KB | Output is correct |