# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
477885 | starplat | Type Printer (IOI08_printer) | C++14 | 149 ms | 59644 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
vector<char> order,ans;
int n,mxlen,ct,vis[550005];
string s,mxs;
struct node{
int word,ac[30],go;
}trie[550005];
void add(string x,bool ok)
{
int curr=0;
for (int i=0;i<x.length();i++){
if (!trie[curr].ac[x[i]-'a']) trie[curr].ac[x[i]-'a']=++ct;
curr=trie[curr].ac[x[i]-'a'];
trie[curr].go=ok;
//if (trie[curr].go==true) cout<<curr<<"\n";
}
trie[curr].word=1;
}
void dfs(int curr)
{
vis[curr]=1;
if (trie[curr].word) ans.push_back('P');
int dumb=-1;
for (int i=0;i<26;i++){
int node=trie[curr].ac[i];
if (node==0) continue;
if (vis[node]) continue;
//if (curr==27) cout<<node<<" "<<trie[node].go<<"\n";
if (trie[node].go==1) {
dumb=i;
// cout<<trie[node].go<<" "<<curr<<" "<<dumb<<"\n" ;
}
else {
ans.push_back(char(i+'a'));
dfs(node);
ans.push_back('-');
}
}
//cout<<dumb<<"\n";
if (dumb>-1){
//cout<<trie[curr].ac[dumb]<<"\n";
ans.push_back(char(dumb+'a'));
dfs(trie[curr].ac[dumb]);
}
}
int main()
{
cin>>n;
for (int i=0;i<n;i++){
cin>>s;
if (s.length()>mxlen) mxlen=s.length(),mxs=s;
add(s,0);
}
add(mxs,1);
dfs(0);
//dfs(trie[0].ac[mxs[0]-'a']);
cout<<ans.size()<<"\n";
for (char c:ans) cout<<c<<"\n";
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |