이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
//#define DIM 25010 nu inteleg de ce uneori iau eroare de la define
//#define MOD 666013
using namespace std;
const int MOD = 66617;
const int DIM = 25010;
char v[DIM][22],s[22];
vector <char> sol;
pair <int,int> lg[DIM];
int n,i,j,cod,cnt,k;
struct trie{
int nr,maxi;
trie *f[26];
trie(){
nr = maxi = 0;
for (int i=0;i<26;i++)
f[i] = 0;
}
};
trie *rad = new trie;
void add_trie (trie *&rad, char *s){
if (*s != 0){
if (rad->f[*s - 'a'] == 0)
rad->f[*s - 'a'] = new trie;
add_trie (rad->f[*s - 'a'],s+1);
rad->maxi = max (rad->maxi, rad->f[*s - 'a']->maxi + 1);
} else rad->nr++;
}
void dfs (trie *&rad){
while (rad->nr){
sol.push_back('P');
rad->nr--;
cnt++;
}
if (cnt == n)
return;
int maxi = 0;
for (int i=0;i<26;i++)
if (rad->f[i] && rad->f[i]->maxi > maxi)
maxi = rad->f[i]->maxi;
for (int i=0;i<26;i++)
if (rad->f[i] && rad->f[i]->maxi != maxi){
sol.push_back('a' + i);
dfs (rad->f[i]);
}
for (int i=0;i<26;i++)
if (rad->f[i] && rad->f[i]->maxi == maxi){
sol.push_back('a' + i);
dfs (rad->f[i]);
}
if (cnt != n)
sol.push_back('-');
}
int main (){
//ifstream cin ("date.in");
//ofstream cout ("date.out");
/// probabil nu e bn dar csf
cin>>n;
for (i=1;i<=n;i++){
cin>>v[i];
lg[i] = make_pair(strlen (v[i]),i);
}
sort (lg+1,lg+n+1);
for (i=1;i<=n;i++){
int idx = lg[i].second;
add_trie (rad,v[idx]);
}
dfs (rad);
cout<<sol.size()<<"\n";
for (auto it : sol)
cout<<it<<"\n";
return 0;
}
# | 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... |