TOPIC

Wrong answer 100%

otavio asked 1 year ago

Alguem saberia me dizer pq ta dando 100% WA? Todos casos do udebug estão corretos, segue código.

#include <iostream>
#include <vector>

using namespace std;

int main() {
    string frase;
    while(getline(cin, frase)) {
        int quantidadeCaracteres = 0, quantidadePalavras = 0;
        int ehPalavra = 1, marcador = 0;
        for (int i = 0; i < frase.length(); i ++) {
            quantidadeCaracteres++;
            if(frase[i] == '0' || frase[i] == '1' || frase[i] == '2' || frase[i] == '3' || frase[i] == '4' ||frase[i] == '5' || frase[i] == '6' || frase[i] == '7' || frase[i] == '8' || frase[i] == '9'){
                ehPalavra = 0;
            } else if(frase[i] == '.' && (i == marcador || i == 0 || frase[i - 1] == ' ' || (frase[i + 1] != ' ' && i != frase.length() - 1))){
                ehPalavra = 0;
            } else if(frase[i] == '.' && frase[i - 1] != '.') {
                quantidadeCaracteres--;
            }
            if(frase[i] == ' ' || i == frase.length() - 1 ){
                if(frase[i] == ' '){
                    quantidadeCaracteres--;
                }
                if(ehPalavra == 0) {
                    if(i == frase.length() - 1)
                        quantidadeCaracteres -= (i + 1 - marcador);
                    else
                        quantidadeCaracteres -= (i - marcador);
                    ehPalavra = 1;
                } else if(i != 0) {
                    quantidadePalavras++;
                }
                marcador = i + 1;
            }
        }
        int mediaTamanhoPalavras;
        if(quantidadePalavras > 0)
            mediaTamanhoPalavras = quantidadeCaracteres / quantidadePalavras;
        else
            mediaTamanhoPalavras = 0;
        if(mediaTamanhoPalavras <= 3) {
            cout << "250" << endl;
        } else if(mediaTamanhoPalavras == 4 || mediaTamanhoPalavras == 5) {
            cout << "500" << endl;
        } else {
            cout << "1000" << endl;
        }
    }
}

Remember not post solutions. Your post may be reviewed by our moderators.

  • Paulo Diogo replied 1 year ago

    Testa esse caso:

    csly c.npwlrh.xkcirg evjxp.b .xug

    Acho que o problema são as entradas com espaço no final.

  • otavio replied 1 year ago

    Realmente o código dava problema com entradas com espaços no final. Acho que consegui arrumar esse problema mas mesmo assim ainda recebo 100% WA.

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main() {
        string frase;
        while(getline(cin, frase)) {
            int quantidadeCaracteres = 0, quantidadePalavras = 0;
            int ehPalavra = 1, marcador = 0, quantidadePontosFinais = 0;
            for (int i = 0; i < frase.length(); i ++) {
                quantidadeCaracteres++;
                if(frase[i] == '0' || frase[i] == '1' || frase[i] == '2' || frase[i] == '3' || frase[i] == '4' ||frase[i] == '5' || frase[i] == '6' || frase[i] == '7' || frase[i] == '8' || frase[i] == '9'){
                    ehPalavra = 0;
                } else if(frase[i] == '.' && (i == marcador || i == 0 || frase[i - 1] == ' ' || (frase[i + 1] != ' ' && i != frase.length() - 1))){
                    ehPalavra = 0;
                } else if(frase[i] == '.') {
                    quantidadePontosFinais++;
                }
                if(frase[i] == ' ' || i == frase.length() - 1 ){
                    if(frase[i] == ' '){
                        quantidadeCaracteres--;
                    }
                    if(ehPalavra == 0) {
                        if(i == frase.length() - 1){
                            quantidadeCaracteres -= (i + 1 - marcador);
                        } else {
                            quantidadeCaracteres -= (i - marcador);
                        }
                        ehPalavra = 1;
                    } else if(i != 0 && frase[i - 1] != ' ') {
                        quantidadeCaracteres -= quantidadePontosFinais;
                        quantidadePalavras++;
                    } else if(i == frase.length() - 1 && frase[i] != ' ') {
                        quantidadeCaracteres -= quantidadePontosFinais;
                        quantidadePalavras++;
                    }
                    quantidadePontosFinais = 0;
                    marcador = i + 1;
                }
            }
            int mediaTamanhoPalavras;
            if(quantidadePalavras > 0)
                mediaTamanhoPalavras = quantidadeCaracteres / quantidadePalavras;
            else
                mediaTamanhoPalavras = 0;
            if(mediaTamanhoPalavras <= 3) {
                cout << "250" << endl;
            } else if(mediaTamanhoPalavras == 4 || mediaTamanhoPalavras == 5) {
                cout << "500" << endl;
            } else {
                cout << "1000" << endl;
            }
        }
    }