Submission #1313778

#TimeUsernameProblemLanguageResultExecution timeMemory
1313778algoproclubType Printer (IOI08_printer)C++20
10 / 100
28 ms11232 KiB
// UUID: 33d4de0a-48fc-46c2-9adf-50d105362172
#include <bits/stdc++.h>
using namespace std;

vector<char> nodes(1, 0);
vector<vector<int>> nbrs(1, vector<int>(0));
vector<bool> vis;
string strans;
int dfs(int Index){
	if(vis[Index]) return 0;
	vis[Index]=true;
	//printf("[%d: %d]", Index, nbrs[Index].size());
	int ans=0;
	for(int x : nbrs[Index]){
		if(!vis[x]){
			strans.push_back(nodes[x]);
			//printf("%c\n", nodes[x]);
			ans+=2+dfs(x);
			strans.push_back('-');
			//printf("-\n");
		}
	}
	if(ans==0){
		strans.push_back('P');
	}
	return ans;
}

int main() {
	int n; cin >> n;
	int maxLen=0;
	vector<pair<int, string>> input(n); for(auto& x : input){
		cin >> x.second;
		x.first=x.second.size();
	}
	sort(input.begin(), input.end());
	for(int i=0;i<n;i++){
		const string& s=input[i].second;
		maxLen=max(maxLen, (int)s.size());
		int curr=0;
		for(char x : s){
			bool found=false;
			for(int y : nbrs[curr]){
				if(x==nodes[y]){
					found=true;
					curr=y;
					break;
				}
			}
			if(!found){
				nbrs[curr].push_back(nbrs.size());
				curr=nbrs.size();
				nbrs.push_back(vector<int>(0));
				nodes.push_back(x);
			}
		}
	}
	vis.resize(nodes.size(), false);
	cout << dfs(0)+n-maxLen;
	while(strans.back()=='-') strans.pop_back();
	for(char x : strans) cout << '\n' << x;
}
#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...