# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
468520 | mariowong | Type Printer (IOI08_printer) | C++14 | 117 ms | 31164 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>
#define hmod (long long)1223334444555553
using namespace std;
int n,len,mx,indx,cnt,now,tmp;
string s[25005];
char node[500005];
bool build,gg;
vector <int> edge[500005];
bool p[500005];
vector <char> ans;
void dfs(int x){
if (x != 0) ans.push_back(node[x]);
if (p[x]) ans.push_back('P');
for (int i=0;i<edge[x].size();i++){
dfs(edge[x][i]);
}
ans.push_back('-');
}
int main(){
ios::sync_with_stdio(false);
//freopen("typ7b.in","r",stdin);
cin >> n;
for (int i=1;i<=n;i++){
now=0;
cin >> s[i]; len=s[i].length();
if (len > mx){
mx=len;
indx=i;
}
for (int j=0;j<len;j++){
build=true;
for (int k=0;k<edge[now].size();k++){
if (node[edge[now][k]] == s[i][j]){
now=edge[now][k];
build=false;
break;
}
}
if (build){
edge[now].push_back(++cnt);
node[cnt]=s[i][j];
now=cnt;
}
}
p[now]=true;
}
len=s[indx].length(); now=0;
for (int i=0;i<len;i++){
for (int j=0;j<edge[now].size();j++){
if (node[edge[now][j]] == s[indx][i]){
tmp=edge[now][j];
edge[now].erase(edge[now].begin()+j); edge[now].push_back(tmp);
now=tmp;
break;
}
}
}
dfs(0);
cout << (int)ans.size()-mx-1 << "\n";
for (int i=0;i<(int)ans.size()-mx-1;i++){
cout << ans[i] << "\n";
}
return 0;
}
/*
8
xxvebmc
ixhvdhcjxon
hsspmkly
labfaryosskugbkiuffd
yerx
mhgpafawzhnt
eejzatjmnqxctn
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... |