TOPIC

PROBLEM 1342 - URI Fórum 1.0

URI Online Judge asked 7 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Cristhian Bonilha replied 6 years ago

    Acredito que o erro esteja no caso onde dois jogadores ficam presos juntos.

    Você verifica se um jogador foi preso, e se ele foi, você simplesmente faz o segundo andar. Mas se o segundo também estivesse preso, ele não deveria andar. Há ainda a possibilidade de um terceiro estar preso, etc.

  • Guilherme replied 6 years ago

    o problema era esse mesmo, obrigado, criei uma função que buscasse o próximo que pudesse jogar.

  • Guilherme replied 6 years ago

    Estou com uma dúvida, fiz o seguinte código, para o testes que fiz funcionou, o mas quando submeto, recebo 50% de erro.

    #include <stdio.h>
    #include <stdlib.h>
    int main(){
    
    int p,s,a1,a2,a3,rol=0,i=0,d1,d2,c_rol=0;
    int *player,*posicao,*preso;
    scanf("%d %d",&p,&s);
    
    while(p!=0){
    c_rol=0;
    player= (int*) malloc (p* sizeof(int));
    posicao=(int*) malloc(p*sizeof(int));
    preso=(int*) malloc(p*sizeof(int));
    
        for(i=0;i<p;i++){
        player[i]=i+1;
        posicao[i]=0;
        preso[i]=0;
        }
            scanf("%d %d %d",&a1,&a2,&a3);
            scanf("%d",&rol);
    i=0;
    
                while(c_rol<rol){
                scanf("%d %d",&d1,&d2);
                    if(preso[i%p]==0){
                    posicao[i%p]=posicao[i%p]+d1+d2;
                        if((posicao[i%p]==a1) || (posicao[i%p]==a2) || (posicao[i%p]==a3)){
                        preso[i%p]=1;
                        }
                        i++;
                    }else{
            preso[i%p]=0;
            posicao[(i+1)%p]=posicao[(i+1)%p]+d1+d2;
            if((posicao[(i+1)%p]==a1) || (posicao[(i+1)%p]==a2) || (posicao[(i+1)%p]==a3)){
            preso[(i+1)%p]=1;
            }
                    i=i+2;
        }
                        c_rol++;
    
    }
    
    for(i=0;i<p;i++){
    if(posicao[i]>s){
    printf("%d\n",player[i]);
    }
    }
    free(player);
    player=NULL;
    free(posicao);
    posicao=NULL;
    free(preso);
    preso=NULL;
    scanf("%d %d",&p,&s);
    }
    return 0;
    }
  • William Almeida Suzukayama replied 6 years ago

    De acordo com o enunciado " A segunda linha descreve as armadilhas, representadas por três inteiros diferentes T1, T2 e T3, mostrando suas posições na trilha (1 <= T1, T2, T3 <= S)." , T1,T2 e T3 devem ser maiores que 1, ao invés de maior ou igual a 1 visto que não é possível sair uma soma igual a 1 com o lançamento de dois dados.