Submission #1168435

#TimeUsernameProblemLanguageResultExecution timeMemory
1168435nuutsnoyntonType Printer (IOI08_printer)C++20
0 / 100
53 ms48824 KiB
#include<bits/stdc++.h>

using namespace std;
using ll = long long;
const ll M = 2e6 + 2;
const ll N = 3e4 + 2;
ll trie[M][26];
ll cur_node = 0;
set < ll > S[N];
void add_string(string str, ll ind) {
	ll node = 0;
	for ( char ch : str) {
		if ( trie[node][ch - 'a'] == 0) trie[node][ch - 'a'] = ++cur_node;
		node = trie[node][ch - 'a'];
		S[ind].insert(node);
	}
}
int main() {
	ll n, m, r, x, y, i, p, j, ans, t;

	cin >> n;
	
	string str[n + 2];
	
	for (i = 1; i <= n; i ++) {
		cin >> str[i];
	}
	sort(str + 1, str + n + 1);
	reverse(str + 1, str + n + 1);
	for (i = 1; i <= n; i ++) {
		add_string(str[i], i);
	}
	vector < ll > Ans;
	
	for (j = 0; j < str[1].size(); j ++) Ans.push_back(str[1][j] - 'a');
	Ans.push_back(26);
	for (i = 2; i <= n; i ++) {
		ll node = 0;
		for (j = 0; j < str[i - 1].size(); j ++) {
			node = trie[node][str[i - 1][j] - 'a'];
			if ( S[i].find(node) == S[i].end()) break;
		}
		r = str[i - 1].size()- j - 1;
		p =j;
		while ( r --) Ans.push_back(-1);
		for (j =p; j < str[i].size(); j ++) {
			Ans.push_back(str[i][j] - 'a');
		}
		Ans.push_back(26);
	}
	cout << Ans.size() << endl;
	for (i = 0; i < Ans.size(); i ++) {
		if ( Ans[i] == -1) cout << "-\n";
		else {
			if ( Ans[i] == 26) cout << "P\n";
			else cout<< char(Ans[i] + 'a') << "\n";
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...