답안 #245871

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
245871 2020-07-07T15:59:26 Z ScarletS Type Printer (IOI08_printer) C++17
20 / 100
77 ms 34964 KB
#include <bits/stdc++.h>
#define ll long long
#define sz(x) (int)(x).size()
using namespace std;
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//uniform_int_distribution<int>(1000,10000)(rng)

int nextL[500000+5][26],depths[500000+5],tot=0;
vector<pair<int,int>> children[500000+5];
bool isEnd[500000+5];
string alpha="abcdefghijklmnopqrstuvwxyz",ans="";

void dfs(int cur)
{
    for (int i=0;i<26;++i)
        if (nextL[cur][i])
        {
            dfs(nextL[cur][i]);
            children[cur].push_back({depths[nextL[cur][i]],i});
            depths[cur]=max(depths[cur],depths[nextL[cur][i]]+1);
        }
    sort(children[cur].begin(), children[cur].end());
}

void addWord()
{
    int cur=0;
    string s;
    cin>>s;
    for (auto c : s)
    {
        if (!nextL[cur][c-'a'])
        {
            ++tot;
            nextL[cur][c-'a']=tot;
        }
        cur=nextL[cur][c-'a'];
    }
    isEnd[cur]=1;
}

void ansBuilder(int cur)
{
    for (auto i : children[cur])
    {
        ans+=alpha[i.second];
        ansBuilder(nextL[cur][i.second]);
    }
    if (isEnd[cur])
        ans+='P';
    if (cur)
        ans+="-";
}

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    int n;
    cin>>n;
    while (n--)
        addWord();
    dfs(0);
    ansBuilder(0);
    while (sz(ans)&&ans.back()=='-')
        ans.pop_back();
    cout<<sz(ans)<<"\n";
    for (auto c : ans)
        cout<<c<<"\n";
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 12032 KB Output is correct
2 Correct 12 ms 12032 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 12160 KB Output is correct
2 Correct 12 ms 12032 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 11 ms 12160 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 12064 KB Output is correct
2 Incorrect 12 ms 12160 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 12 ms 12160 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 14 ms 13056 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 21 ms 15744 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 39 ms 21264 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 77 ms 34964 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 75 ms 29716 KB Output isn't correct
2 Halted 0 ms 0 KB -