Submission #293586

#TimeUsernameProblemLanguageResultExecution timeMemory
293586kshitij_sodaniType Printer (IOI08_printer)C++14
100 / 100
200 ms80760 KiB
#include <bits/stdc++.h>
using namespace std;
#define a first
#define b second
#define pb push_back

typedef long long llo;
#define endl '\n'
int n;
int ma=0;
vector<int> ss;
int pre[500001][26];
int co=0;
vector<pair<int,string>> adj[500001];
int endd[500001];
void insert(string s){
	int cur=0;
	vector<int> kk;
	for(int i=0;i<s.size();i++){
		if(pre[cur][s[i]-'a']==0){
			co+=1;
			pre[cur][s[i]-'a']=co;
			string te="";
			te+=s[i];
			adj[cur].pb({co,te});
		}
		
		cur=pre[cur][s[i]-'a'];
		kk.pb(cur);
	}
	endd[cur]=1;
	if(s.size()>ma){
		ma=s.size();
		ss=kk;
	}
}
int vis[5000001];
void dfs(int no,string tt=""){
	if(no!=0){
		cout<<tt<<endl;
	}
	if(endd[no]){
		cout<<"P"<<endl;
	}
	for(auto j:adj[no]){
		if(vis[j.a]==0){
			dfs(j.a,j.b);
		}
	}
	for(auto j:adj[no]){
		if(vis[j.a]==1){
			dfs(j.a,j.b);
		}
	}
	if(vis[no]==0 and no!=0){
		cout<<"-"<<endl;
	}


}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin>>n;
	for(int i=0;i<n;i++){
		string s;
		cin>>s;
		insert(s);
	}
	cout<<((co+co-ma+n))<<endl;
	for(auto j:ss){
		vis[j]=1;
	}
	dfs(0);



	return 0;
}

Compilation message (stderr)

printer.cpp: In function 'void insert(std::string)':
printer.cpp:19:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |  for(int i=0;i<s.size();i++){
      |              ~^~~~~~~~~
printer.cpp:32:13: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   32 |  if(s.size()>ma){
      |     ~~~~~~~~^~~
#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...