TEMA

PROBLEM 1547 - URI Fórum 1.0

URI Online Judge preguntado 6 years ago

URI Online Judge Fórum 1.0

MOD

Este tema fue resuelto y no puede recibir nuevas respuestas.

  • Manuel52 respondido 5 years ago

    Try this: 1 2 103 1 2

    Output 2

    You cant suppose than your min val is 101. You should set min = abs(arr[0]-s)

  • Gleider Mackedanz respondido 6 years ago

    iai gente, ta dando 10% de erro, mas não to conseguindo descobrir onde esta:

    Resolvido!

    agradeço desde já;

  • pkmr1291 respondido 6 years ago

    CAN SOMEBODY EXPLAIN ME THE QUESTION?

  • Suanny Fabyne respondido 4 years ago

    Ta dando wrong answer 10%, alguém pode ajudar aí?

    #include <stdio.h>
    
    int main () {
    
        int c, qt, i, numg, dif, dif2, valor, ganhador, aux, j;
    
        scanf("%d", &c);
    
        for (j = 0; j < c; j++)
        {
            scanf("%d %d", &qt, &numg);
            dif2 = 150;
            aux = 0;
    
            for (i = 0; i < qt; i++)
            {
                scanf("%d", &valor);
    
                if (valor > numg)
                {
                    dif = valor - numg;
    
                    if (dif < dif2)
                    {
                        dif2 = dif;
                        ganhador = i + 1;
    
                    }
                }
    
                else if (valor < numg)
                {
                    dif = numg - valor;
    
                    if (dif < dif2)
                    {
                        dif2 = dif;
                        ganhador = i + 1;
                    }
    
                }
    
                else if (valor == numg && aux == 0)
                {
                    ganhador = i + 1;
                    aux = 1;
                }
    
            }
    
            printf("%d\n", ganhador);
    
        }
    
        return 0;
    }
  • Luyza Ellen respondido 5 years ago

    Esse meu problema está apresentado W.A de 10% e não sei onde está o erro. Será que alguém pode me ajudar?

    #include<iostream>
    #include<vector>
    #include<cstdlib>
    
    using namespace std;
    int main()
    {
        int caso,q,s,camisa,i;
        vector<int> numero;
        cin>>caso;
        int prox = 1;
       while(caso--)
        {
            cin>>q>>s;
            for(i = 1; i<=q; i++)
            {
                cin>>camisa;
                numero.push_back(camisa);
                if(abs(numero[i] - s) < abs(numero[prox] - s)){
                   prox = i ;
    
                }
           }
           cout<<prox<<endl;
        }
    
        return(0);
    }
  • gabriel respondido 5 years ago

    olá, estou tendo um problema e não sei o que é meu codigo fica em 10% mas eu usei o toolkit e o exemplo para testar no meu codigo e funcionou. alguém pfv pode ajudar?

    #include <stdio.h>
    
    int main() {
    
        int n, qt, s, i, j, na, c, dif, menor,aux;
    
        scanf("%d", &n);
        for(j = 0; j < n; j++){
            scanf("%d %d", &qt, &s);
            aux = 0;
            menor = 101;
            for(i = 1; i <= qt; i++){
                scanf("%d", &na);
                if (na == s && aux == 0)
                {
                    c = i;
                    aux = 1;
                }
                else if (na > s)
                    dif = na - s;
                    else
                    dif = s - na;
                    if(dif < menor)
                    {
                        c = i;
                        menor = dif;
                    }
            }
            printf ("%d\n",c);
        }
        return 0;
    }
  • Marcus Antunius respondido 5 years ago

    Tô recebendo WA10% alguém sabe onde está o erro ?

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
        int n,qt,s,sorteado=0,menor=0;
        vector <int> alunos;
        cin>>n;
        for (int i = 0; i < n; i++) {
            cin>>qt>>s;
            menor=s;
            int vetor[qt];
            for (int j = 0; j < qt; j++) {
                int numero;
                cin>>numero;
                alunos.push_back(numero);
                vetor[j]=abs(alunos[j] - s);
                if ((alunos[j]==s)&&(sorteado==0)){
                    sorteado=j+1;
                }
    
            }
            if (sorteado==0){
                for (int m = 0; m < qt; m++){
                    if (menor>vetor[m]){
                        menor=vetor[m];
                        sorteado=m+1;
                    }
                }
            }
    
            cout<<sorteado<<endl;
            sorteado=0,menor=0;
            alunos.clear();
       }
    
        return 0;
    }
  • Pedro Paiva respondido 5 years ago

    Olá, venho aqui pedi ajuda nessa questão. Estou recebendo WA 10%.

    RESOLVIDO!!! AMEM! KKKKKK

    Grato pela atenção.

  • Ricardo Negreiros respondido 5 years ago

    Esse é o meu código; está recebendo 30% de erro;

    Resolvido.

    Alguém poderia me dar uma dica do que pode ser? Se quiser/puder, dê casos em que ele dá erro. Obs.: não consegui submeter testes no toolkit.

  • Samuel Eduardo respondido 6 years ago

    Eae gente. Então,estou com dificuldade nessa questão.Não consigo resolver meu erro nesse código.Sei que está na parte do "break".Por algum motivo,apos eu efetuar algum comando que passa por ele,os outros ficam errados. Alguem sabe explicar ? Valeu

    #include<stdio.h>
    #include<math.h>
    int main(){
      int N,i,Alunos,Numero,aux,AlunN,j=0,adivin=0,aux2=101;
      scanf("%i",&N);
      for (i=0;i<N;i++){
        scanf("%i %i",&Alunos,&Numero);
        for (j=1;j<=Alunos;j++){
            scanf("%i",&AlunN);
    
            if (AlunN==Numero){
                aux=j;
                break;
                }
    
            else {
    
                adivin=abs(AlunN-Numero);
                if (adivin<aux2){
                    aux2=adivin;
                    aux=j;
                    }
                  }
    
       }
        printf("%i\n",aux);
        aux=0;
        aux2=30000;
        adivin=0;
      }
    return 0;
    }
  • Albert Mourato respondido 6 years ago

    #include <bits/stdc++.h>
    using namespace std;
    int modulo(int x){
        if (x<0){
            x = x*(-1);
            return x;
        }
        return x;
    }
    int arrays[10];
    int main(){
        //freopen("in.txt", "r", stdin);
        int n;
        int a, b, k, aux, saida = 0;
        cin>>n;
        while(n>0){
            k=0;
            aux =0;
            cin>>a>>b;
            while(k<a){
                cin>>arrays[k];
                if(arrays[k]==b&&aux==0){
                    aux = k;
                }
                k++;
            }
            if(arrays[aux]!=b){//b n esta no array
                int auxiliar = modulo(b-arrays[0]);
                for(int i = 1; i<a;i++){
                    int v = modulo(b-arrays[i]);
                    if(auxiliar>v){
                        auxiliar = v;
                        saida = i;
                    }
                }
                cout<<saida+1<<"\n";
    
            }else{
                cout<<aux+1<<"\n";
            }
            n--;
        }
    }

    Alguém sabe dizer porque estou recebendo WA 20%?

  • Gleider Mackedanz respondido 6 years ago

    Era exatamente esse problema. E obrigado pela dica! =]

  • Ahmed ali Abotaleb respondido 6 years ago

    Provavelmente, o problema é nesta linha (primeira do penúltimo else):

    menor=s;

    Pelo que eu entendi, essa variável menor armazena a menor diferença entre um número e s. O negócio é que a MENOR diferença pode ser maior que s, fazendo com que esse bloco:

    if(var<menor){
        num=i;
        menor=var;
    }

    nunca seja atingido.

    Acho que iniciar essa variável com um valor suficientemente grande deve resolver o problema.

    Uma dica: no seu primeiro for, você utiliza uma flag para indicar quando um valor for encontrado, certo? O problema é que todas as iterações seguintes serão inúteis, já que você encontrou o resultado. Em vez de usar essa flag, você pode usar a estrutura break;, que, como o próprio nome já diz, pára o laço do escopo atual (nesse caso, o for), poupando tempo de execução.

    Abraços!

  • Gleider Mackedanz respondido 6 years ago

    Esse meu código ainda não passa, da 10% de erro.

    Resolvido!

    Não sei onde está o problema, pois fiz diversos teste e eles funcionaram normalmente. Desde já agradeço.

  • Rodrigo Fabiam respondido 6 years ago

    Pessoal, Fiz o codigo, mas estou tendo 20% de Wrong Error. Como posso descobrir qual resposta esta dando errada? E quando uso o ToolKit, e coloco essa entrada, não esta gerando saida nenhuma.

  • Thalyson Nepomuceno respondido 6 years ago

    Gleider, atente um pouco mais nos limites da questão : )

  • Wyllian Brito respondido 6 years ago

    Observe o que vc tá fazendo com sua variavel T

  • Francisco Martins respondido 6 years ago

    Estou recebendo WA 10%... Onde está o problema?

    Resolvido.
  • Jonatas Laet respondido 6 years ago

    Considerando: dif = abs(vet[0] - s); position = 1;

    E depois, dentro de um for de j=1 até s, fazer esta verificação: se abs(vet[i] - s) < dif, então dif recebe abs(vet[j] - s) e position recebe j+1;

    Fazendo os passos acima, o código passa.

  • Jonatas Roberto respondido 6 years ago

    #include<iostream>
    using namespace std;
    
    int main()
    {
        int n,r,ri,q,c;
        cin>>n;
    
        for(int j=0;j<n;j++)
        {
            cin>>q>>c;
            int a[q];
    
            int m=0,M=105,mi,Mi,cont=0,difM,difm;
    
            for(int i=0;i<q;i++)
            {
                cin>>a[i];
    
                if(a[i]==c&&cont==0)//acertou o numero
                {
                    r=a[i];//numero 
                    ri=i;//indice da posiçao do do numero
                    ++cont;//confirma o acerto
    
                }
    
            else if  (a[i]>c&&a[i]<M&&cont==0)//chegou perto do numero e esse
                {   // numero eh Maior que o escolhido pelo professor
    
                    M=a[i];//numero
                    Mi=i;//posição desse numero
    
                }
    
            else if (a[i]<c&&a[i]>m&&cont==0)//chegou perto do numero
                {// e esse numero eh menor que oescolhido pelo professor
                    m=a[i];//numero
                    mi=i;//posição do numero
    
                }
    
            }
    
            if(cont!=0)//se alguem alguem accertou o numero
            {
                cout<<ri+1<<endl;
            }
    
            else//quem chegou mais proximo do numero
            {
                difM=M-c;
                difm=c-m;
    
                if(difM==difm)//a diferença dos numeros "chutados" e o sorteado  eh igual
                {
                    if(mi<Mi)//menor indice ganha
                    {
                        cout<<mi+1<<endl;
                    }
                    else
                    {
                        cout<<Mi+1<<endl;
                    }
    
                }
    
                //
                else if(difM>difm) 
                {
                    cout<<mi+1<<endl;
    
                }
    
                else if(difM<difm)
                {
                    cout<<Mi+1<<endl;
                }
    
            }
        }
    }

    To recebendo 10% WA aguem pode da um help?