# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1184283 | rexdino | Type Printer (IOI08_printer) | C++20 | 231 ms | 69772 KiB |
#include<bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define sz(s) (int)s.size()
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define REP(i,a,b) for(int i=a;i>=b;--i)
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const int N = 5e5 + 5;
const int mod = 1e9 + 7;
const int base = 31;
const ll INF = 1e18;
/// CODE ///
int n;
string s[N];
vector<char> V;
int dem = 0;
void print(){
cout << V.size() << "\n";
for (char c : V) cout << c << "\n";
exit(0);
}
int cnt = 0;
int node[N][27];
int fin[N], h[N];
void Add(string s){
int id = 0;
FOR(i, 0, s.size()-1){
int k = s[i] - 'a';
if (node[id][k] == 0) node[id][k] = ++cnt;
id = node[id][k];
}
h[id] = 0;
fin[id]++;
}
void dfs(int id){
if (fin[id]){
V.pb('P');
if (++dem == n) print();
}
FOR(i, 0, 20){
FOR(j, 0, 25){
if (node[id][j] != 0 && h[node[id][j]] == i){
char c = j + 'a';
V.pb(c);
dfs(node[id][j]);
}
}
}
V.pb('-');
}
void input(){
cin >> n;
FOR(i, 1, n){
cin >> s[i];
Add(s[i]);
}
REP(id, cnt, 0){
FOR(j, 0, 25){
if (node[id][j] != 0){
h[id] = max(h[id], h[node[id][j]] + 1);
}
}
}
dfs(0);
}
signed main(){
#define NAME "main"
if (fopen(NAME".inp", "r")){
freopen(NAME".inp", "r", stdin);
freopen(NAME".out", "w", stdout);
}
ios_base::sync_with_stdio(false); cin.tie(nullptr);
input();
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |