TOPIC

PROBLEM 1561 - URI Fórum 1.0

beecrowd asked 9 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • KelvinS replied 7 years ago

    Muito Obrigado, não tinha visto!

  • Josenaldo replied 7 years ago

    O final do problema se dá por EOF, não pela entrada 00:00.

  • tyronedamasceno replied 7 years ago

    O toolkit está apresentando erro. A questão só passa com '\n' em todas as entradas, o toolkit não mostra a quebra de linha na ultima entrada.

  • KelvinS replied 8 years ago

    Estou recebendo WA 10% e não consigo encontrar o problema. Segue o código:

    Resolvido!

    Alguém consegue me dar uma ideia do que pode ser? Obrigado

  • rfelipe2 replied 8 years ago

    Renan Tashiro, continuarei procurando, cara. Posto o que encontrar aqui, sim.

  • rtashiro0 replied 8 years ago

    rafaelfelipeac, infelizmente não consegui identificar o motivo de TLE.

    Também me deparei com um caso semelhante em outro problema onde eu não conseguia ver o porque de também receber TLE. Eu tinha feito em C, então eu decidi fazer em C++ e consegui AC, o que é estranho porque nesse problema eu fiz em C, além de ter várias pessoas que também conseguiram.

    Espero que consiga achar o problema e que compartilhe depois.

  • rfelipe2 replied 8 years ago

    Renan Tashiro, ajudou, sim. Realmente não tinha me ligado que o valor retornado nem sempre seria 2. Valeu. O link que mandou é bom, já tinha resolvido alguns exercícios pegando informações de lá.

    Testei da maneira que você sugeriu, aqui no meu PC rodou sem problemas, mas quando submeti ele, recebi "Time limit exceeded". Achei estranho, pois para mim o código estava simples, mas como estava fazendo usando dois For, dei uma simplificada fazendo as coisas separadas pra ver se era esse o problema, mas aparentemente, não. Ainda continuo recebendo "Time limit exceeded".

    Agora não sei se realmente fiz algo que não deveria no código ou se ainda é algo relacionado ao critério de parada. Consegue identificar alguma coisa?

    #include <stdio.h>
    #include <stdlib.h>
    
    main()
    {
        int h, m, i, a, b, cont = 0;
        char hora[4], minuto[6], d;
    
        while (scanf("%i %c %i", &h, &d, &m) != EOF) {      
            //for (i = 0; i < 6; i++)
                //minuto[i] = ' ';
            //for (i = 0; i < 4; i++)
                //hora[i] = ' ';
            minuto[0] = minuto[1] = minuto[2] = minuto[3] = minuto[4] = minuto[5] = ' ';
            hora[0] = hora[1] = hora[2] = hora[3] = ' ';
    
            //a = 8;
            //b = 32;
    
            //hora
            if (h >= 8) {
                h -= 8;
                hora[0] = 'o';
            }
            if (h >= 4) {
                h -= 4;
                hora[1] = 'o';
            }
            if (h >= 2) {
                h -= 2;
                hora[2] = 'o';
            }
            if (h >= 1) {
                h -= 1;
                hora[3] = 'o';
            }
    
            //minuto
            if (m >= 32) {
                m -= 32;
                minuto[0] = 'o';
            }
            if (m >= 16) {
                m -= 16;
                minuto[1] = 'o';
            }
            if (m >= 8) {
                m -= 8;
                minuto[2] = 'o';
            }
            if (m >= 4) {
                m -= 4;
                minuto[3] = 'o';
            }
            if (m >= 2) {
                m -= 2;
                minuto[4] = 'o';
            }
            if (m >= 1) {
                m -= 1;
                minuto[5] = 'o';
            }
    
            /*for (i = 0; i < 4; i++) {
                if (h >= a) {
                    hora[i] = 'o';
                    h -= a;
                }
                a = a / 2;
            }
    
            for (i = 0; i < 6; i++) {
                if (m >= b) {
                    minuto[i] = 'o';
                    m -= b;
                }
                b = b / 2;
            }*/
    
            printf(" ____________________________________________       \n");
            printf("|                                            |      \n");
            printf("|    ____________________________________    |_     \n");
            printf("|   |                                    |   |_)    \n");
            printf("|   |   8         4         2         1  |   |      \n");
            printf("|   |                                    |   |      \n");
            printf("|   |   %c         %c         %c         %c  |   |  \n", hora[0], hora[1], hora[2], hora[3]);
            printf("|   |                                    |   |      \n");
            printf("|   |                                    |   |      \n");
            printf("|   |   %c     %c     %c     %c     %c     %c  |   |\n", minuto[0], minuto[1], minuto[2], minuto[3], minuto[4], minuto[5]);
            printf("|   |                                    |   |      \n");
            printf("|   |   32    16    8     4     2     1  |   |_     \n");
            printf("|   |____________________________________|   |_)    \n");
            printf("|                                            |      \n");
            printf("|____________________________________________|      \n");
            printf("\n");
        }
        system("pause");
    }

    Mantive o código que eu estava usando antes de tentar simplificar, mas comentado, caso sirva para comparação.

    Obrigado.

  • rtashiro0 replied 8 years ago

    Olá rafaeilFelipeac, o critério é EOF mesmo. Eu, por exemplo, fiz assim nesse problema:

    while( scanf( "%d%c%d", &hour, &p, &minute ) != EOF )
    Pelo método que você usou, ele continuaria o laço enquanto a função **scanf**retorna-se **2**, mas nem sempre isso vai acontecer no próprio problema, nas entradas possíveis. 
    Sugiro que leia a documentação da função <!-- m --><a class="postlink" href="http://www.cplusplus.com/reference/cstdio/scanf/">http://www.cplusplus.com/reference/cstdio/scanf/</a><!-- m -->, na parte de *Return Value*.
    
    Espero que ajude.
  • rfelipe2 replied 8 years ago

    Olá.

    Minha dúvida nesse exercício é sobre a quantidade de casos de teste. No enunciado, se fala "A entrada é composta por vários casos de teste.". Não consegui um bom critério de parada.

    Se fizer por EOF ele roda e os resultados batem, mas recebe "Wrong answer (100%)".

    while (scanf("%i %i", &h, &m)==2) {

    Se fizer indo até 1000, funciona, mas recebo "Wrong answer (40%)".

    while (cont<1000) {

    Se fizer into até 50, também funciona, mas recebo "Wrong answer (10%)".

    while (cont<50) {

    Se continuar diminuindo, ele volta a dar "Wrong answer (100%)".

    Todos os horários que testei estão funcionando. Imagino que o problema do código esteja no critério de parada, mesmo. Alguma sugestão?

  • rtashiro0 replied 8 years ago

    Uma dica para quem está recebendo WA é abrir o problema em "Full Screen", que o formato apresentado "visualmente" é diferente. Pelo menos eu tomei alguns WA por isso. Espero ter ajudado.

  • oman10 replied 8 years ago

    Eu fiz de um jeito bem detalhado para não haver erro, porém deu wrong answer.

    Alguém tem algum caso de teste que não passe na minha resolução?

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(void)
    {
        int hh, mm;
        int oito=32, quatro=32, dois=32, um=32;
        int trintaDois=32, dezesseis=32, moito=32, mquatro=32, mdois=32, mum=32;
        int pula=0;
    
        while(scanf("%d:%d", &hh, &mm)!=EOF)
        {
            if(pula==1) printf("\n");
            //printf("%d:%d\n", hh, mm);
    
            if(hh==0)
            {
                oito=32; quatro=32; dois=32; um=32;
            }
            else if(hh==1)
            {
                oito=32; quatro=32; dois=32; um=111;
            }
            else if(hh==2)
            {
                oito=32; quatro=32; dois=111; um=32;
            }
            else if(hh==3)
            {
                oito=32; quatro=32; dois=111; um=111;
            }
            else if(hh==4)
            {
                oito=32; quatro=111; dois=32; um=32;
            }
            else if(hh==5)
            {
                oito=32; quatro=111; dois=32; um=111;
            }
            else if(hh==6)
            {
                oito=32; quatro=111; dois=111; um=32;
            }
            else if(hh==7)
            {
                oito=32; quatro=111; dois=111; um=111;
            }
            else if(hh==8)
            {
                oito=111; quatro=32; dois=32; um=32;
            }
            else if(hh==9)
            {
                oito=111; quatro=32; dois=32; um=111;
            }
            else if(hh==10)
            {
                oito=111; quatro=32; dois=111; um=32;
            }
            else if(hh==11)
            {
                oito=111; quatro=32; dois=111; um=111;
            }
    
            if(mm==0)
            {
                trintaDois=32; dezesseis=32; moito=32; mquatro=32; mdois=32; mum=32;
            }
            else if(mm==1)
            {
                trintaDois=32; dezesseis=32; moito=32; mquatro=32; mdois=32; mum=111;
            }
            else if(mm==2)
            {
                trintaDois=32; dezesseis=32; moito=32; mquatro=32; mdois=111; mum=32;
            }
            else if(mm==3)
            {
                trintaDois=32; dezesseis=32; moito=32; mquatro=32; mdois=111; mum=111;
            }
            else if(mm==4)
            {
                trintaDois=32; dezesseis=32; moito=32; mquatro=111; mdois=32; mum=32;
            }
            else if(mm==5)
            {
                trintaDois=32; dezesseis=32; moito=32; mquatro=111; mdois=32; mum=111;
            }
            else if(mm==6)
            {
                trintaDois=32; dezesseis=32; moito=32; mquatro=111; mdois=111; mum=32;
            }
            else if(mm==7)
            {
                trintaDois=32; dezesseis=32; moito=32; mquatro=111; mdois=111; mum=111;
            }
            else if(mm==8)
            {
                trintaDois=32; dezesseis=32; moito=111; mquatro=32; mdois=32; mum=32;
            }
            else if(mm==9)
            {
                trintaDois=32; dezesseis=32; moito=111; mquatro=32; mdois=32; mum=111;
            }
            else if(mm==10)
            {
                trintaDois=32; dezesseis=32; moito=111; mquatro=32; mdois=111; mum=32;
            }
            else if(mm==11)
            {
                trintaDois=32; dezesseis=32; moito=111; mquatro=32; mdois=111; mum=111;
            }
            else if(mm==12)
            {
                trintaDois=32; dezesseis=32; moito=111; mquatro=111; mdois=32; mum=32;
            }
            else if(mm==13)
            {
                trintaDois=32; dezesseis=32; moito=111; mquatro=111; mdois=32; mum=111;
            }
            else if(mm==14)
            {
                trintaDois=32; dezesseis=32; moito=111; mquatro=111; mdois=111; mum=32;
            }
            else if(mm==15)
            {
                trintaDois=32; dezesseis=32; moito=111; mquatro=111; mdois=111; mum=111;
            }
            else if(mm==16)
            {
                trintaDois=32; dezesseis=111; moito=32; mquatro=32; mdois=32; mum=32;
            }
            else if(mm==17)
            {
                trintaDois=32; dezesseis=111; moito=32; mquatro=32; mdois=32; mum=111;
            }
            else if(mm==18)
            {
                trintaDois=32; dezesseis=111; moito=32; mquatro=32; mdois=111; mum=32;
            }
            else if(mm==19)
            {
                trintaDois=32; dezesseis=111; moito=32; mquatro=32; mdois=111; mum=111;
            }
            else if(mm==20)
            {
                trintaDois=32; dezesseis=111; moito=32; mquatro=111; mdois=32; mum=32;
            }
            else if(mm==21)
            {
                trintaDois=32; dezesseis=111; moito=32; mquatro=111; mdois=32; mum=111;
            }
            else if(mm==22)
            {
                trintaDois=32; dezesseis=111; moito=32; mquatro=111; mdois=111; mum=32;
            }
            else if(mm==23)
            {
                trintaDois=32; dezesseis=111; moito=32; mquatro=111; mdois=111; mum=111;
            }
            else if(mm==24)
            {
                trintaDois=32; dezesseis=111; moito=111; mquatro=32; mdois=32; mum=32;
            }
            else if(mm==25)
            {
                trintaDois=32; dezesseis=111; moito=111; mquatro=32; mdois=32; mum=111;
            }
            else if(mm==26)
            {
                trintaDois=32; dezesseis=111; moito=111; mquatro=32; mdois=111; mum=32;
            }
            else if(mm==27)
            {
                trintaDois=32; dezesseis=111; moito=111; mquatro=111; mdois=111; mum=111;
            }
            else if(mm==28)
            {
                trintaDois=32; dezesseis=111; moito=111; mquatro=111; mdois=32; mum=32;
            }
            else if(mm==29)
            {
                trintaDois=32; dezesseis=111; moito=111; mquatro=111; mdois=32; mum=111;
            }
            else if(mm==30)
            {
                trintaDois=32; dezesseis=111; moito=111; mquatro=111; mdois=111; mum=32;
            }
            else if(mm==31)
            {
                trintaDois=32; dezesseis=111; moito=111; mquatro=111; mdois=111; mum=111;
            }
            else if(mm==32)
            {
                trintaDois=111; dezesseis=32; moito=32; mquatro=32; mdois=32; mum=32;
            }
            else if(mm==33)
            {
                trintaDois=111; dezesseis=32; moito=32; mquatro=32; mdois=32; mum=111;
            }
            else if(mm==34)
            {
                trintaDois=111; dezesseis=32; moito=32; mquatro=32; mdois=111; mum=32;
            }
            else if(mm==35)
            {
                trintaDois=111; dezesseis=32; moito=32; mquatro=32; mdois=111; mum=111;
            }
            else if(mm==36)
            {
                trintaDois=111; dezesseis=32; moito=32; mquatro=111; mdois=32; mum=32;
            }
            else if(mm==37)
            {
                trintaDois=111; dezesseis=32; moito=32; mquatro=111; mdois=32; mum=111;
            }
            else if(mm==38)
            {
                trintaDois=111; dezesseis=32; moito=32; mquatro=111; mdois=111; mum=32;
            }
            else if(mm==39)
            {
                trintaDois=111; dezesseis=32; moito=32; mquatro=111; mdois=111; mum=111;
            }
            else if(mm==40)
            {
                trintaDois=111; dezesseis=32; moito=111; mquatro=32; mdois=32; mum=32;
            }
            else if(mm==41)
            {
                trintaDois=111; dezesseis=32; moito=111; mquatro=32; mdois=32; mum=111;
            }
            else if(mm==42)
            {
                trintaDois=111; dezesseis=32; moito=111; mquatro=32; mdois=111; mum=32;
            }
            else if(mm==43)
            {
                trintaDois=111; dezesseis=32; moito=111; mquatro=32; mdois=111; mum=111;
            }
            else if(mm==44)
            {
                trintaDois=111; dezesseis=32; moito=111; mquatro=111; mdois=32; mum=32;
            }
            else if(mm==45)
            {
                trintaDois=111; dezesseis=32; moito=111; mquatro=111; mdois=32; mum=111;
            }
            else if(mm==46)
            {
                trintaDois=111; dezesseis=32; moito=111; mquatro=111; mdois=111; mum=32;
            }
            else if(mm==47)
            {
                trintaDois=111; dezesseis=32; moito=111; mquatro=111; mdois=111; mum=111;
            }
            else if(mm==48)
            {
                trintaDois=111; dezesseis=111; moito=32; mquatro=32; mdois=32; mum=32;
            }
            else if(mm==49)
            {
                trintaDois=111; dezesseis=111; moito=32; mquatro=32; mdois=32; mum=111;
            }
            else if(mm==50)
            {
                trintaDois=111; dezesseis=111; moito=32; mquatro=32; mdois=111; mum=32;
            }
            else if(mm==51)
            {
                trintaDois=111; dezesseis=111; moito=32; mquatro=32; mdois=111; mum=111;
            }
            else if(mm==52)
            {
                trintaDois=111; dezesseis=111; moito=32; mquatro=111; mdois=32; mum=32;
            }
            else if(mm==53)
            {
                trintaDois=111; dezesseis=111; moito=32; mquatro=111; mdois=32; mum=111;
            }
            else if(mm==54)
            {
                trintaDois=111; dezesseis=111; moito=32; mquatro=111; mdois=111; mum=32;
            }
            else if(mm==55)
            {
                trintaDois=111; dezesseis=111; moito=32; mquatro=111; mdois=111; mum=111;
            }
            else if(mm==56)
            {
                trintaDois=111; dezesseis=111; moito=111; mquatro=32; mdois=32; mum=32;
            }
            else if(mm==57)
            {
                trintaDois=111; dezesseis=111; moito=111; mquatro=32; mdois=32; mum=111;
            }
            else if(mm==58)
            {
                trintaDois=111; dezesseis=111; moito=111; mquatro=32; mdois=111; mum=32;
            }
            else if(mm==59)
            {
                trintaDois=111; dezesseis=111; moito=111; mquatro=32; mdois=111; mum=111;
            }
    
            printf(" ____________________________________________\n");
            printf("|                                            |\n");
            printf("|    ____________________________________    |_\n");
            printf("|   |                                    |   |_)\n");
            printf("|   |   8         4         2         1  |   |\n");
            printf("|   |                                    |   |\n");
            printf("|   |   %c         %c         %c         %c  |   |\n", oito, quatro, dois, um);
            printf("|   |                                    |   |\n");
            printf("|   |                                    |   |\n");
            printf("|   |   %c     %c     %c     %c     %c     %c  |   |\n",trintaDois, dezesseis, moito, mquatro, mdois, mum);
            printf("|   |                                    |   |\n");
            printf("|   |   32    16    8     4     2     1  |   |_\n");
            printf("|   |____________________________________|   |_)\n");
            printf("|                                            |\n");
            printf("|____________________________________________|\n");
    
            pula=1;
        }
    
        return 0;
    }
  • Emanuel6 replied 9 years ago

    Alguém pode me dizer o por que de eu estar recebendo WA 100%?

    #include <stdio.h>
    
    int main ()
    {
        int a, b, i;
        char h[4], m[6];
    
        while(scanf("%d:%d", &a, &b)!=EOF)
        {
            for(i=0;i<=3;i++)
                h[i] = ' ';
    
            for(i=0;i<=5;i++)
                m[i] = ' ';
    
            if (a >= 8)
            {
                h[0] = 'o';
                a -= 8;
            }
    
            if (a >= 4)
            {
                h[1] = 'o';
                a -= 4;
            }
    
            if (a >= 2)
            {
                h[2] = 'o';
                a -= 2;
            }
    
            if (a == 1)
            {
                h[3] = 'o';
            }
    
            if (b>=32)
            {
                m[0] = 'o';
                b -= 32;
            }
            if (b>=16)
            {
                m[1] = 'o';
                b -= 16;
            }
            if (b>=8)
            {
                m[2] = 'o';
                b -= 8;
            }
            if (b>=4)
            {
                m[3] = 'o';
                b -= 4;
            }
            if (b>=2)
            {
                m[4] = 'o';
                b -= 2;
            }
            if (b==1)
                m[5] = 'o';
    
            printf(" ____________________________________________\n");
            printf("|                                            |\n");
            printf("|    ____________________________________    |_\n");
            printf("|   |                                    |   |_)\n");
            printf("|   |   8         4         2         1  |   |\n");
            printf("|   |                                    |   |\n");
            printf("|   |   %c         %c         %c         %c  |   |\n", h[0], h[1], h[2], h[3]);
            printf("|   |                                    |   |\n");
            printf("|   |   %c     %c     %c     %c     %c     %c  |   |\n", m[0], m[1], m[2], m[3], m[4], m[5]);
            printf("|   |                                    |   |\n");
            printf("|   |   32    16    8     4     2     1  |   |_\n");
            printf("|   |____________________________________|   |_)\n");
            printf("|                                            |\n");
            printf("|____________________________________________|\n");
    
        }
    
        return 0;
    }
  • aaabotaleb replied 9 years ago

    Bem chatinho esse problema, hein? Copiei o formato do output de forma exata, recebi WA, tentei mudar porque achei que tava meio estranho e continuo recebendo WA. Alguém poderia me dar uma ajuda?

    #include <stdio.h>
    
    int main (void) {
        int ihoras, i, iminutos, a1, a2;
        char horas[4], minutos[6];
    
        while(1) {
            scanf("%d:%d", &ihoras, &iminutos);
            getchar();
    
            a1 = ihoras;
            a2 = iminutos;
    
            for(i = 0; i < 4; i++) {
                horas[i] = ' ';
            }
    
            for(i = 0; i < 6; i++) {
                minutos[i] = ' ';
            }
    
            if (ihoras >= 8) {
                horas[0] = 'o';
                ihoras -= 8;
            }
            if (ihoras >= 4) {
                horas[1] = 'o';
                ihoras -= 4;
            }
            if (ihoras >= 2) {
                horas[2] = 'o';
                ihoras -= 2;
            }
            if (ihoras == 1) {
                horas[3] = 'o';
            }
    
            if (iminutos >= 32) {
                minutos[0] = 'o';
                iminutos -= 32;
            }
            if (iminutos >= 16) {
                minutos[1] = 'o';
                iminutos -= 16;
            }
            if (iminutos >= 8) {
                minutos[2] = 'o';
                iminutos -= 8;
            }
            if (iminutos >= 4) {
                minutos[3] = 'o';
                iminutos -= 4;
            }
            if (iminutos >= 2) {
                minutos[4] = 'o';
                iminutos -= 2;
            }
            if (iminutos == 1) {
                minutos[5] = 'o';
            }
    
            printf(" ____________________________________________\n");
            printf("|                                            |\n");
            printf("|    ____________________________________    |_\n");
            printf("|   |                                    |   |_)\n");
            printf("|   |   8         4         2         1  |   |\n");
            printf("|   |                                    |   |\n");
            printf("|   |   %c         %c         %c         %c  |   |\n", horas[0], horas[1], horas[2], horas[3]);
            printf("|   |                                    |   |\n");
            printf("|   |                                    |   |\n");
            printf("|   |   %c     %c     %c     %c     %c     %c  |   |\n", minutos[0], minutos[1], minutos[2], minutos[3], minutos[4], minutos[5]);
            printf("|   |                                    |   |\n");
            printf("|   |   32    16    8     4     2     1  |   |_\n");
            printf("|   |____________________________________|   |_)\n");
            printf("|                                            |\n");
            printf("|____________________________________________|\n");
    
            if(!a1 && !a2)
                break;
            printf("\n");
        }
    
        return 0;
    }

    Valeu!