Submission #122190

#TimeUsernameProblemLanguageResultExecution timeMemory
122190thebesType Printer (IOI08_printer)C++14
100 / 100
170 ms51692 KiB
#include <bits/stdc++.h>
using namespace std;

const int MN = 3e4+4, MM = 5e5+5;
string s;
vector<char> mv;
int n, i, t[MM][26], lol[MM], len[MM], nxt, p;
int solve(int p){
    int mx=0, nx=-1, r;
    for(int i=0;i<26;i++){
        if(!t[p][i]) continue;
        if(len[t[p][i]]>mx){
            mx = len[t[p][i]];
            nx = i;
        }
    }
    if(lol[p]) mv.push_back('P');
    if(nx==-1) return 0;
    for(int i=0;i<26;i++){
        if(!t[p][i]||i==nx) continue;
        mv.push_back(i+'a');
        r = solve(t[p][i])+1;
        while(r--) mv.push_back('-');
    }
    mv.push_back('a'+nx);
    r=solve(t[p][nx])+1;
    return r;
}
int main(){
    for(scanf("%d",&n),i=1;i<=n;i++){
        cin >> s; p = 0;
        for(auto c : s){
            if(!t[p][c-'a']) t[p][c-'a']=++nxt;
            p = t[p][c-'a'];
            len[p] = max(len[p], (int)s.size());
        }
        lol[p] = 1;
    }
    solve(0);
    printf("%d\n",mv.size());
    for(auto v : mv) printf("%c\n",v);
    return 0;
}

Compilation message (stderr)

printer.cpp: In function 'int main()':
printer.cpp:40:28: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<char>::size_type {aka long unsigned int}' [-Wformat=]
     printf("%d\n",mv.size());
                   ~~~~~~~~~^
printer.cpp:30:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(scanf("%d",&n),i=1;i<=n;i++){
         ~~~~~~~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...