TOPIC

PROBLEM 1961 - 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.

  • Israel Pinheiro Ruas Junior replied 4 years ago

    Esse problema tem uma pegadinha, porque além do calculo se o pulo + cano é >= ao próximo cano, você tem que fazer o cálculo se o próximo cano é muito baixo para o pulo.

    Segue o enunciado para prestar atenção:

    "Caso a altura do cano seguinte seja muito alta, o sapo bate no cano e cai. Se a altura do cano seguinte for muito baixa, o sapo não aguenta a queda. O sapo sempre começa em cima do cano mais à esquerda."

    A altura do próximo cano, não pode ser mais baixa que o cano anterior - pulo.

    Acho que isso vai servir para muitos!!

  • 🧙The Install Wizard 🧙 replied 4 years ago

    O primeiro valor voce poder ler antes de entrar num laco... então voce começa o laco pelo valor 1 até qtde ... dentro do laco faz a leitura do segundo valor ... compara a altura ... então coloca o segundo valor na variável que guardava o primeiro valor.

  • Hola Que Tal replied 4 years ago

    WA 20 % Por que ? ;/

    int main(){
       int altpulo, npulo, canos, pulo=0, aux = 0;
    
       cin >> altpulo >> npulo;
    
       while(npulo--){
    
          cin >> canos;
          aux = canos;
          if(pulo - aux > altpulo){
             cout << "GAME OVER" << endl;
             return 0;
          }
    
          pulo = canos;
    
       }
    
       cout << "YOU WIN" << endl;
    
    }
  • Diego Fraga replied 4 years ago

    Creio que Tenha que fazer a comparação com o modulo ABS, para o código funcionar, o pulo para baixo também é verificado, se for maior a altura que o sapo pula da game over também.

  • Luyza Ellen replied 4 years ago

    O problema é que eu não estou sabendo como armazenar o primeiro e o último valor , para assim realizar a diferença e fazer a comparação. :(

  • 🧙The Install Wizard 🧙 replied 4 years ago

    Acho que a dica do gabriel resolve seu problema.

    Edit : Não resolve não =X

  • Michael Monteiro replied 4 years ago

    Alguém me ajuda? Wrong Answer 10%

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    
        int i,pulo,canos,alturas[100];
        char resultado[10];
        scanf("%d %d",&pulo,&canos);
        for(i=0;i<canos;i++)
        {
            scanf("%d",&alturas[i]);
            if(i>0)
            {
                if(alturas[i]-alturas[i-1]>pulo || alturas[i-1]-alturas[i]>pulo)
                    strcpy(resultado,"GAME OVER");
                else
                    strcpy(resultado,"YOU WIN");
            }
        }
        printf("%s\n",resultado);
    
        return 0;
    
    }
  • Luyza Ellen replied 4 years ago

    #include<iostream>
    #include<cstdio>
    
    using namespace std;
    
    int main()
    {
        int qtde,alt,dif,canos,num =0,prox;
        cin>>alt>>qtde;
        for(int i = 0; i<qtde; i++)
        {
            cin>>canos;
            if(canos-prox<=alt)
            {
                prox=canos;
                num++;
            }
        }
    
        if(num==qtde){
            cout<<"YOU WIN"<<endl;
        }
        else{
            cout<<"GAME OVER"<<endl;
        }
    
        return(0);
    }
  • Gabriel Duarte replied 4 years ago

    Acho que você entendeu o problema um pouco errado. Repare que o problema pede para você analisar a diferença absoluta entre os canos, se existir 2 canos consecutivos onde a diferença for maior que P, então ele perde.

    MOD
  • Luyza Ellen replied 4 years ago

    O meu código está com 20% de erro . Alguém pode me ajudar a resolver este erro?

    #include<iostream>
    #include<cstdio>
    
    using namespace std;
    
    int main()
    {
        int canos, altura, numeros, qtde = 0,num;
        cin>>altura>>canos;
        for(int i = 0; i<canos;i++)
        {
            cin>>numeros;
    
            num = numeros;
             if(num-altura<=altura)
            {
                qtde++;
            }
        }
    
        if(qtde==canos){
            cout<<"YOU WIN"<<endl;
        }
        else{
            cout<<"GAME OVER"<<endl;
        }
    
        return(0);
    }
  • Pedro Monteiro replied 4 years ago

    Já consegui resolver, obrigado!

  • 🧙The Install Wizard 🧙 replied 5 years ago

    teste o caso 1 2 2 3

  • Pedro Monteiro replied 5 years ago

    Estou recebendo WA 20%, qual o problema do código?

    #include <iostream>
    
    using namespace std;
    
    int main() {
        int A,C,CP,N,P,TESTE;
    
        scanf ("%d %d", &P, &N);
    
        for (CP = 0, TESTE = 1; CP < N; CP++) {
            scanf ("%d",&C);
    
            if (CP == 0)
                A = C;
            else
                if (A+P > C) {
                    A = C;
                    TESTE++;
                }       
        }
    
        if (TESTE == N) 
            printf ("YOU WIN\n");
        else
            printf ("GAME OVER\n");
    
        return 0;
    }