답안 #522496

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
522496 2022-02-05T05:19:41 Z Jesus Type Printer (IOI08_printer) C++14
10 / 100
429 ms 61848 KB
#include <bits/stdc++.h>

using namespace std;

char ans[5000000];

struct arbol{
    char letra;
    int palabra_mayor;
    bool fin_palabra=false;
    int hijos[28];
};

string mayor;

int aux,desocupado=1;

arbol raices[500002];


void res(int pos, bool rama){
    if(pos!=0) {
            ans[aux]=raices[pos].letra;
            aux++;
    }
    if(raices[pos].fin_palabra==true) {
            ans[aux]='P';
            aux++;
    }
    int m=-1;
    for(int i=0;i<28;i++){
        if(raices[pos].hijos[i]!=0){
            if(desocupado<mayor.size()&&raices[raices[pos].hijos[i]].letra==mayor[desocupado]) {
                    m=i;
                    desocupado++;
            }
            else res(raices[pos].hijos[i],false);
        }
    }
    if(pos==0&&m!=-1) res(raices[pos].hijos[m],true);
    else if(m!=-1) res(raices[pos].hijos[m],rama);
    if(pos!=0&&rama==false) {
            ans[aux]='-';
            aux++;
    }
}


int main()
{
    ios_base::sync_with_stdio();cin.tie(0);
    int n;
    cin>>n;
    string palabra;
    for(int i=0;i<n;i++){
        cin>>palabra;
        if(palabra.size()>mayor.size()) mayor=palabra;
        aux=0;
        for(char l:palabra){
            if(raices[aux].hijos[l-'a']!=0) aux=raices[aux].hijos[l-'a'];
            else{
                raices[aux].hijos[l-'a']=desocupado;
                aux=desocupado;
                raices[aux].letra=l;
                desocupado++;
            }
        }
        raices[aux].fin_palabra=true;
    }
    desocupado=0;
    aux=0;
    res(0,false);
    cout<<aux<<endl;
    for(int i=0;i<aux;i++){
        cout<<ans[i]<<endl;
    }
    return 0;
}

Compilation message

printer.cpp: In function 'void res(int, bool)':
printer.cpp:33:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |             if(desocupado<mayor.size()&&raices[raices[pos].hijos[i]].letra==mayor[desocupado]) {
      |                ~~~~~~~~~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 60876 KB Output is correct
2 Correct 23 ms 60944 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 21 ms 60900 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 22 ms 60888 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 22 ms 60956 KB didn't print every word
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 26 ms 60856 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 42 ms 60968 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 86 ms 61092 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 189 ms 61272 KB didn't print every word
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 429 ms 61848 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 350 ms 61688 KB didn't print every word
2 Halted 0 ms 0 KB -