Submission #438004

# Submission time Handle Problem Language Result Execution time Memory
438004 2021-06-27T11:59:12 Z dutch Type Printer (IOI08_printer) C++17
100 / 100
113 ms 48404 KB
#include <bits/stdc++.h>
using namespace std;

const int LIM = 20 * 25000;

array<int, 26> g[LIM];
int a[LIM], b[LIM], w = 0, j = 0;
pair<int, string> mx = {0, ""};

void dfs(int u){
	while(a[u]--) cout << "P\n";
	if(u == w) exit(0);
	for(int i=0; i<26; ++i){
		if(!g[u][i] || g[u][i] == b[u]) continue;
		cout << char('a' + i) << '\n';
		dfs(g[u][i]);
		cout << "-\n";
	}
	if(!b[u]) return;
	cout << mx.second[j++] << '\n';
	dfs(b[u]);
	cout << "-\n";
}

signed main(){
	cin.tie(0)->sync_with_stdio(0);
	int n, e = 0; cin >> n;
	for(int i=0; i<n; ++i){
		string s; cin >> s;
		mx = max(mx, {s.size(), s});
		int u = 0;
		for(char c : s){
			if(!g[u][c-'a']) g[u][c-'a'] = ++e;
			u = g[u][c-'a'];
		}
		++a[u];
	}
	for(char c : mx.second)
		b[w] = g[w][c-'a'], w = b[w];
	cout << 2*e - mx.first + n << '\n';
	dfs(0);
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 2 ms 716 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 972 KB Output is correct
2 Correct 3 ms 1228 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 3060 KB Output is correct
2 Correct 18 ms 6144 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 18 ms 7244 KB Output is correct
2 Correct 7 ms 1740 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 46 ms 17792 KB Output is correct
2 Correct 94 ms 40644 KB Output is correct
3 Correct 55 ms 20980 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 37 ms 13892 KB Output is correct
2 Correct 113 ms 48404 KB Output is correct
3 Correct 60 ms 23712 KB Output is correct
4 Correct 96 ms 45636 KB Output is correct