TOPIC

PROBLEM 1222 - URI Fórum 1.0

beecrowd asked on Feb 8 2013

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • wwessner replied 9 years ago

    Porque estou tomando Time limit exceeded? O que eu posso fazer para melhorar?

    #include<stdio.h>
    #include<string.h>
    int numero_de_palavra,linha_por_pagina,caractere_por_linha;
    int k,tamanho,tamanho_total,linha,pagina;
    char poema[1000][70];
    int main()
    {
        while (scanf("%d%d%d",&numero_de_palavra,&linha_por_pagina,&caractere_por_linha)!=EOF)
        {
            for (k=0;k<numero_de_palavra;k++)
            {
                scanf("%s",&poema[k]);      
            }
    
            tamanho_total=0;
            linha=0;
            pagina=1;
            for (k=0;k<numero_de_palavra;k++)
            {
                tamanho=strlen(poema[k])+1;
                tamanho_total=tamanho+tamanho_total;
                if (tamanho_total==caractere_por_linha)
                {
                    linha++;
                    tamanho_total=0;
                }
                else
                {
                    if (caractere_por_linha==tamanho_total-1)
                    {
                        linha++;
                        tamanho_total=0;
                    }
                    else
                    {
                        if (tamanho_total>caractere_por_linha)
                        {
                            k--;
                            linha++;
                            tamanho_total=0;
                        }
                    }
    
                }
    
                if (linha==linha_por_pagina)
                {
                    linha=0;
                    pagina++;
                }
            }
            printf("%d\n",pagina);
    
        }
    }
  • ggroth replied on Jul 13 2013

    Teste com essa entrada:

    14 4 19
    Se mana Piedade tem casado com Quincas Borba apenas me daria uma esperanca colateral
    16 3 29
    No dia seguinte entrou a dizer de mim nomes feios e acabou alcunhando me Dom Casmurro
    5 2 2
    a de i deo a
    5 2 2
    a e i o  u

    A saída esperada, de acordo com o toolkit é:

    2
    2
    3
    3
  • Joao40 replied 8 years ago

    Explica a lógica que você usou pra resolver, é mais fácil pra te ajudar.

  • rnogueira3 replied 8 years ago

    olá,

    Este problema esta fazendo eu ficar completamente louco!!! (risos)

    Usando os casos de testes do enunciado passam todos. Então resolvi testar os casos enviado pelo ...

    Não passaram!! Eu "printei" os casos simulando a saída real (como realmente ficariam organizadas as páginas) E, por exemplo, o primeiro caso do link acima, no meu programa contabiliza 10 páginas e não 11 como especificado no link. No segundo caso, o meu programa gera o resultado igual a 38 páginas, e não 44 como no link.

    O meu código é em Python 3 e quem quiser testar:

    import sys
    
    for linha in sys.stdin:
        num1, num2, num3 = linha.split()
        conto = list(input())
    
        cont=1
        linha=0
        pagina=1
        quebra=0
        print("PAGINA %d\n" % pagina)
        for c in conto:
            print(c, end=" ")
    
            if cont % int(num3) == 0:
                if cont<= len(conto)-1 and conto[cont] == " ":
                    del conto[cont]
    
                print("\n")
                quebra += 1
                if quebra%int(num2) == 0:
                    pagina += 1
                    print("PAGINA %d\n" % pagina)
    
                linha += 1
            cont += 1

    O que pode estar acontecendo de errado no meu código? Com certeza não deve estar cobrindo alguma situação específica

  • Joao40 replied 8 years ago

    http://maratona.ime.usp.br/hist/2012/primeira-fase/

    Nesse link tem o as entradas e as saídas corretas.

  • rnogueira3 replied 8 years ago

    Desenvolvi um programa que resolve, de forma correta, todas as entradas exemplificadas no enunciado do problema. Como também o caso de teste citado anteriormente:

    6 1 5
    aaa b aaa b aaa b

    E mesmo assim, no momento da submissão, a execução está resultando em WRONG ANSWER. Alguém tem outros casos para testar minha solução?

  • rnogueira3 replied 8 years ago

    Entendi!!! A estratégia que adotei para solucionar o problema não funciona para alguns casos. Obrigado pela resposta.

  • Joao40 replied 8 years ago

    Nesse caso as linhas ficariam (as 3 com 5 caracteres cada):

    aaa b aaa b aaa b

    Como é 1 linha por página, da um total de 3 páginas

  • rnogueira3 replied 8 years ago

    Por que este caso de teste retorna 3?

    6 1 5
    aaa b aaa b aaa b

    O meu código retorna todas as respostas de forma correta igual no exemplo do enunciado. Eu não entendi por que o resultado é 3. Não conta os espaços?

  • mmelo3 replied 8 years ago

    When I answered this question, I had not considered this case.

  • rtashiro0 replied 9 years ago

    Consegui resolver o problema, obrigado pelo toque.

  • mleao1 replied 9 years ago

    Testa esse caso:

    6 1 5
    aaa b aaa b aaa b

    A resposta é 3, mas seu programa dá como output 4.

  • rtashiro0 replied 9 years ago

    Resolvido.

    20% WA, algúem poderia me ajudar? Obrigado.

  • tkora0 replied 9 years ago

    Matheus Leão, it is also possible to take the string input with gets. I had to put that inside the while condition. That solved it. Thank you very much again, for your help.

  • tkora0 replied 9 years ago

    Thank you very much for your help, Matheus Leão. I will try to implement your suggestion.

  • mleao1 replied 9 years ago

    tora kora, you don't need to iterate over each letter. Try to read each word as string (%s) and manipulate just the length of it.

  • mleao1 replied 9 years ago

    William, e se você fizer um loop só? Você pode tratar os dados à medida em que lê.

  • tkora0 replied 9 years ago

    Here you go.

    Resolvido

    Any help would be appreciated. Thank you.

  • crbonilha replied 9 years ago

    tora kora, please post your code here so we can check if the problem is in your code or not. If not, we can re-check the test cases.

  • tkora0 replied 9 years ago

    But, Matheus, I get a time-limit exceeded error in the online judge. It seems that those wrong test cases are being tested. In the problem description, first of all, it has been stated that,

    1. The word length will not be greater than the value of C (Characters per line) which in the case of

    2. The above condition is correct, because, the description also states that, each word has to be integral in a line. This should be the cause of the TLE error.

    What do you think about that? Thank you.

1 of 2