# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
520303 | new_acc | Type Printer (IOI08_printer) | C++14 | 158 ms | 69440 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;
#define ll long long
#define fi first
#define se second
#define all(a) a.begin(), a.end()
#define pb push_back
const ll maxv = LLONG_MAX;
const ll minv = maxv * (-1LL);
const int maxn = 25*1000+10;
const int maxm = 1000*1000+10;
const int SS = 1024*1024;
string s[maxn];
int trie[maxn*20][26+10];
int l = 1;
bool konczy[maxn*20];
vector <char> res;
int m1,m2;
int g[maxn*20];
void Dfs(int v, int odl)
{
if(v == 0) return;
if(m1 < odl)
m1 = odl, m2 = v;
for(int i = 1; i <= 26; i++)
Dfs(trie[v][i], odl + 1);
}
bool Dfs2(int v)
{
if(v == 0) return false;
if(v == m2) return true;
g[v] = 27;
for(int i = 1; i <= 26; i++)
if(Dfs2(trie[v][i])) g[v] = i;
if(g[v] != 27) return true;
return false;
}
void Dfswyn(int v)
{
if(konczy[v]) res.pb('P');
if(v == m2) return;
for(int i = 1; i < g[v]; i++) {
if(trie[v][i] != 0) {
res.pb(char(i + 96));
Dfswyn(trie[v][i]);
}
}
for(int i = 26; i >= g[v]; i--) {
if(trie[v][i] != 0) {
res.pb(char(i+96));
Dfswyn(trie[v][i]);
}
}
if(g[v] < 27) return;
res.pb('-');
}
void add(int ind)
{
string a = s[ind];
int curr = 1;
for(int i = 0; i < a.size(); i++) {
if(trie[curr][(int(a[i]) - 96)] == 0)
trie[curr][(int(a[i]) - 96)] = ++l;
curr = trie[curr][int(a[i]) - 96];
}
konczy[curr] = true;
}
void solve()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++) cin >> s[i];
for(int i = 1; i <= n; i++) add(i);
Dfs(1,1);
Dfs2(1);
Dfswyn(1);
cout << res.size() << "\n";
for(auto i : res)
cout << i << "\n";
}
int main()
{
ios_base::sync_with_stdio(0),cin.tie(0);
solve();
}
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... |