TOPIC

Time limit exceeded - C

Thiago Giebmeyer asked 1 year ago

Alguem consegue identificar o porque dele demorar tanto?

include

main(){

int qtd = 0;

scanf("%d", &qtd);

int vetor[qtd];
int i = 0,j = 0, aux = 0, qtdI = 0, qtdP = 0;

for(i = 0; i < qtd; i++){
    scanf("%d", &vetor[i]);

    if(vetor[i] % 2 == 0){
        qtdP++;
    }
    if(vetor[i] % 2 != 0){
        qtdI++;
    }

}

int impar[qtdI], par[qtdP];

for(i = 0; i < qtd; i++){
    if(vetor[i] % 2 == 0){
        par[i] = vetor[i];
    }
    if(vetor[i] % 2 != 0){
        impar[i] = vetor[i];
    }
}

for(i = 0; i < qtdP; i++){
    for(j = i + 1; j < qtdP; j++){
        if(par[i] > par[j]){

            aux = par[i];
            par[i] = par[j];
            par[j] = aux;

        }
    }   
}

for(i = 0; i < qtdI; i++){
    for(j = i + 1; j < qtdI; j++){
        if(impar[i] > impar[j]){

            aux = impar[i];
            impar[i] = impar[j];
            impar[j] = aux;

        }
    }   
}

    for(i = 0; i < qtdP; i++){
printf("%d\n", par[i]); 
}

        for(i = qtdI; i > 0; i--){
printf("%d\n", impar[i]);   
}

return 0;

}

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

  • Lucas Cruz replied 1 year ago

    Na linha 14, ao invés de " if" use "else if" que evita fazer comparação desnecessáriamente. Ademais, recomendo o que o Aléxis Toigo disse ai. Use um vector e a função sort para ordenar seu vetor. No caso c++

  • Aléxis Toigo replied 1 year ago

    Você tem vários laços for, sendo dois deles com complexibilidade m*n, tente resolver utilizando menos laços, tente utilizar , 2 vector, se estiver em c++, e use um sort, com essas medidas ficará muito mais fácil.