TOPIC

PROBLEM 1855 - URI Fórum 1.0

URI Online Judge asked 5 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Unknown replied 3 years ago

    Para encontrar o erro, pode testar as entradas do uDebug

  • Leonardo Eufrazio replied 3 years ago

    20% de erro.Não sei onde tá,testei alguns casos e passaram.

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        int l,c,ganho=0,ch=0,aux,erro=0;
        char m[100][100];
        char au='z';
        cin >>c>>l;
        for(int i=0;i<l;i++)
            for(int j=0;j<c;j++){
                cin >>m[i][j];
                if(m[i][j]=='*')
                    ch++;
            }
        for(int i=0;i<l;i++){
            aux=0;
            for(int j=0;j<c;j++){
                if(m[i][j]!='*' && i<l && j<c && ch!=0){
                    if((m[i][j]=='>' && au=='<') || (m[i][j]=='<' && au=='>') || (m[i][j]=='v' && au=='^') || (m[i][j]=='^' && au=='v'))
                        erro++;
                    if(m[i][j]=='>'){
                        c++;
                        au='>';
                        aux=1;
                    }
                    else if(m[i][j]=='<'){
                        c--;
                        au='<';
                        aux=2;
                    }
                    else if(m[i][j]=='v'){
                        l++;
                        au='v';
                        aux=3;
                    }
                    else if(m[i][j]=='^'){
                        l--;
                        au='^';
                        aux=4;
                    }
                    else if(m[i][j]=='*'){
                        ganho++;
                        break;
                    }
                    else if(m[i][j]=='.'){
                        if(aux==1)
                            c++;
                        else if(aux==2)
                            c--;
                        else if(aux==3)
                            l++;
                        else if(aux==4)
                            l--;
                    }
                }
                else if(i>=l || j>=c)
                    erro++;
                else if(m[i][j]=='*' && erro==0)
                    ganho++;
            }
        }
        if(ganho==0 || erro!=0)
            cout<<"!"<<endl;
        else
            cout<<"*"<<endl;
        return 0;
    }
    MOD
  • Unknown replied 3 years ago

    Teste com a entrada que acabo de incluir no uDebug:

    3
    2
    >.<
    ^v*
  • Roner Riva replied 3 years ago

    Testei todas as entradas do uDebug e continuo com Wrong Answer (40%)

  • Erick R. B. replied 3 years ago

    Deu Accepted!!! Muito obrigado, bitfreeze! :)

  • Unknown replied 3 years ago

    Incluí novos inputs que podem te ajudar, principalmente o último.

  • Erick R. B. replied 3 years ago

    Acabei de testar os do uDebug. Todas as saídas batem com as minhas. Ainda assim recebo WA 40%. Fiquei testando dezenas de outras entradas. Não faço ideia do que pode estar errado.

  • Unknown replied 3 years ago

    uDebug

  • Erick R. B. replied 3 years ago

    Eu também tô recebendo WA 40%. Alguém tem mais casos de teste?

    Resolvido
  • Roner Riva replied 3 years ago

    Alguém poderia por gentileza me dizer porque este código está recebendo Wrong Answer (40%) ? Ou então disponibilizar casos de teste para qual meu código falha.

    Could someone please tell me why this code is recieving Wrong Answer (40%)? Or maybe share inputs that aren't solved by my code.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char mapa[100][100], s[100], res='!';
        int linhas,colunas,i,j, possibilidades, sentido;
        int le=0,ce=0; // linha e coluna onde esta o explorador
        scanf("%i",&colunas); //largura
        scanf("%i",&linhas); //altura
    
        possibilidades=linhas*colunas*2;
    
        for(i=0;i<100;i++){
            for(j=0;j<100;j++){
                mapa[i][j]='X';
            }
        }
    
        for(i=0;i<linhas;i++){
            fflush(stdin);
            fgets(s,100,stdin);
            fflush(stdin);
            for(j=0;j<colunas;j++){
                mapa[i][j]= s[j];
            }
        }
    
        while(possibilidades>0){
    
            if(le==linhas||le==-1||ce==colunas||ce==-1){ // caso sair dos limites do mapa
                res='!';
                break;
            }
            if(mapa[0][0]=='.'){ // caso a posição inicial não possua direção
                res='!';
                break;
            }
    
            if(mapa[le][ce]=='*'){ // caso encontre o bau
                res='*';
                break;
            }
    
            if(mapa[le][ce]=='v')
                sentido = 1;
    
            else if (mapa[le][ce]=='^')
                sentido = 2;
    
            else if (mapa[le][ce]=='>')
                sentido = 3;
    
            else if (mapa[le][ce]=='<')
                sentido = 4;
    
                switch(sentido){
                    case 1: le=le+1; break;
                    case 2: le=le-1; break;
                    case 3: ce=ce+1; break;
                    case 4: ce=ce-1; break;
                }
    
            possibilidades=possibilidades-1;
        }
    
        printf("%c\n",res);
    
        return 0;
    }
  • Unknown replied 3 years ago

    #include<stdio.h>
    #include<string.h>
    
    int main(){
        int a,i,j,r=0,l=0,d=0,u=0,t=0,c=0;
        char ch;
    
        scanf("%d%d\n",&j,&i);
    
        for( i ; i > 0 ; i--){
            for(a = j; a >= 0; a--){
    
                if(j == 1)
                    scanf("%c\n",&ch);
                else
                    scanf("%c",&ch);
    
                if(ch == '>')   r = 1;
                if(ch == '<')   l = 1;
                if(ch == 'v')   d = 1;
                if(ch == '^')   u = 1;
                if(ch == '.')   t = 1;
                if(ch == '*')   c = 1;
            }
        }
        if((r == 1 || l == 1 || d == 1 || u == 1) && (t == 1) && (c == 1) )
            printf("*\n");
        else
            printf("!\n");
    
        return 0;
    }
  • Unknown replied 4 years ago

    7 5

    ..>..v ^*....v ^.v..< ..v<... ^.<....

    The output is : *

  • Deivid Germano replied 4 years ago

    I was trying to do this in dynamic array size and was getting runtime error. then I made it static and worked well.

  • João replied 4 years ago

    Parece que está errado mesmo, o meu código que passou retorna '!'.

  • NIGHTSX replied 4 years ago

    O Toolkit deu '*' no seguinte caso de teste:

    7
    5
    >.....v
    .......
    *......
    .......
    ^.....>

    A resposta certa não seria '!'?

  • Cristiano Krug Brust replied 4 years ago

    Alguem pode me dizer porque esta dando WA 50%?

    CODIGO REMOVIDO

    consegui resolver

  • 🧙The Install Wizard 🧙 replied 4 years ago

    Tente remover o teste pelo limite.

  • gustavo barbosa replied 4 years ago

    to recebendo time limit exceed, se alguem puder me ajudar.

    #include <stdio.h>
    int main()
    { int A,B,i,j,contador=0,limite;
        scanf("%i",&A);
        scanf("%i",&B);
        limite = A*B;
    char vetor[A][B],C;
        while(getchar()!='\n');
        for (i = 0; i < B; ++i)
        {
            scanf("%s",vetor[i]);
            getchar();
        }
    i=0;
    j=0;
    contador=0;
    while(1){
            if (vetor[i][j]=='.')
            {                   if ( C=='>')
                                {   
                                    j++;
                                }
                                else if (C=='<')
                                {   
                                    j--;
    
                                }
                                else if (C=='v')
                                {   
                                    i++;
    
                                }
                                else if (C=='^')
                                {   
                                    i--;
    
                                }
              contador++;
    
            }
        else if (vetor[i][j]=='*')
         {
           printf("*\n");
           return 0;
         }
        else {
                            if (vetor[i][j]=='>')
                            {   C='>';
                                j++;
                                contador++;
                            }
                            else if (vetor[i][j]=='<')
                            {   C='<';
                                j--;
                                contador++;
                            }
                            else if (vetor[i][j]=='v')
                            {   C='v';
                                i++;
                                contador++;
                            }
                            else if (vetor[i][j]=='^')
                            {   C='^';
                                i--;
                                contador++;
                            }
        }
        if (contador>=limite)
        {
            printf("!\n");
            return 0;
        }
    }
    
        return 0;
    }
  • Rafael Kusdi replied 4 years ago

    Thank You so much! My code is correct now.

  • Alaa Zaid replied 4 years ago

    Test case :

    5 5

    v....

    ...v ..*.. ..... ..^.<

    Answer is : *

1 of 2