Submission #803315

# Submission time Handle Problem Language Result Execution time Memory
803315 2023-08-03T04:09:19 Z UmairAhmadMirza Type Printer (IOI08_printer) C++17
100 / 100
183 ms 111756 KB
#include <bits/stdc++.h>
using namespace std;
int const N=1e5+5;

struct node
{
	char ch;
	map<char,node*> mp;
	set<pair<int,node*>> adj;
	int dep=1;
	int cnt=0;
};
node* root;
int tot=0;
int maxx=0;
void add(){
	string s;
	cin>>s;
	int i=0;
	node* cur=root;
	maxx=max(maxx,int(s.length()));
	while(i<int(s.length())){
		if(cur->mp[s[i]]==NULL){
			cur->mp[s[i]]=new node();
			tot++;
			cur->mp[s[i]]->ch=s[i];
		}
		cur=cur->mp[s[i]];
		i++;
	}
	cur->cnt++;
}
int dep_set(node* rt){
	for(auto i:rt->mp){
		rt->dep=max(rt->dep,dep_set(i.second)+1);
		rt->adj.insert({i.second->dep,i.second});
	}
	return rt->dep;
}
vector<char> ans;
void dfs1(node* rt){
	for (int i = 0; i < rt->cnt; ++i)
		printf("%c\n",'P');
	for(auto i:rt->adj){
		printf("%c\n",i.second->ch);
		tot--;
		dfs1(i.second);
		if(tot!=0)
			printf("%c\n",'-');
	}
}
int main(){
	int t;
	cin>>t;
	root=new node();
	for (int i = 0; i < t; ++i)
		add();
	dep_set(root);
	printf("%d\n",(tot*2)+t-maxx);
	dfs1(root);
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 2 ms 1108 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 2004 KB Output is correct
2 Correct 3 ms 2388 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 6484 KB Output is correct
2 Correct 20 ms 13928 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 26 ms 16368 KB Output is correct
2 Correct 9 ms 3556 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 67 ms 40996 KB Output is correct
2 Correct 139 ms 93936 KB Output is correct
3 Correct 85 ms 48088 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 63 ms 31960 KB Output is correct
2 Correct 183 ms 111756 KB Output is correct
3 Correct 105 ms 54600 KB Output is correct
4 Correct 134 ms 105468 KB Output is correct