TOPIC

PROBLEM 1318 - 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 7 years ago

    Alguns casos de teste pequenos:

    30 10
    12 18 5 11 30 5 19 19 23 15 
    20 10
    6 6 2 8 2 12 16 3 8 17 
    10 10
    2 5 3 4 3 3 2 7 9 6 
    5 10
    3 2 2 4 5 3 3 5 1 5 
    10 10
    4 2 3 4 4 5 2 2 4 9 
    0 0

    Saída:

    2
    3
    2
    3
    2

    Caso não sejam suficientes, experimente esses: https://www.dropbox.com/s/zlpcw16ovcuqv ... es_out.txt Será conveniente substituir seu scanf por um fscanf. Pesquise algo a respeito.

  • Ariel Narciso replied 4 years ago

    Olá pessoa, meu código está dando 60% WA. Alguem poderia me ajudar?

    Se possível me passar mais casos de teste pra eu saber onde estou errando (Nota: O arquivo do link disponibilizado anteriormente não se encontra mais nesse local)

    Segue o código:

    #include <stdio.h>
    
    int main()
    {
        int n, m;
    
        scanf("%d%d", &n, &m);
    
        while (n != 0 || m != 0) {
    
            int t[n], i, k, qtd;
    
            for (i = 0; i < n; i++)
                t[i] = 0;
    
            for (qtd = i = 0; i < m; i++) {
    
                scanf("%d", &k);
    
                if (t[k-1] == 1) {
    
                    qtd++;
                    t[k-1] = 2;
                }
    
                else
                    t[k-1] = 1;
            }
    
            printf("%d\n", qtd);
    
            scanf("%d%d", &n, &m);
        }
    
        return 0;
    }
  • Everton Seiei Arakaki replied 7 years ago

    Testei todos os casos de teste do link do dropbox e todos batem os resultados segundo o toolkit batem com os meus :(

    https://www.dropbox.com/s/zlpcw16ovcuqvuh/bilhetes_out.txt

    Talvez meu raciocinio seja falho ! O melhor jeito é ler, ordenar e comparar os numeros com o numero de tras, com um while de se o num[i-1]==num[i+1] ele pula um indice?

    for(int i=1;i<bilhetes;i++){            
                    if(cod[i]==cod[i-1]){
                        cont++;                                     
                    }
                    while(cod[i+1]==cod[i-1]){
                        i++;
                    }   
                }
  • Everton Seiei Arakaki replied 7 years ago

    WA pode ser por ele tentar acessar uma posição que nao existe no vetor?

    while(cod[i]==cod[i-1]&&cod[i]==cod[i+1]){
                        i++;
    }
  • Domitila Crispim Pietropaolo replied 5 years ago

    WA 50%

    #include <stdio.h>
     int main (){
         int a, f, e, b, falso, cont, i=0, c[1002], u[1002], g;
        while (1){
             scanf ("%d %d", &a, &b);
            if (a==0 && b==0)
            break;
            falso=0;
            for (e=0; e<b; e++){
                    scanf ("%d", &c[e]);
                    for (g=0; g<e; g++){
                        i=0;
                        if (c[e]==c[g] && g!=e) {
                                for (f=0; f<e; f++){
                                    if (c[e]==u[f]){
                                        i=1;
                                    }
                                }
                                if (i==0)
                                falso++;
    
                                u[falso]=c[e];
                        }
    
                    }
    
            }
            printf ("%d\n", falso);
        }
    
        }
  • Pompeu replied 6 years ago

    alguem poderia me ajudar? passa em todos casos de testes porem da 20%

    #include <cstdio>
    #include <cstdlib>
    
    #define LLI long long int 
    
    int main(void){      
    
        LLI b,p,aux,cont,i,tam;
    
        while(scanf("%lld %lld",&b ,&p), b+p > 0){
            tam = p;
    
            if( b > p)
                tam = b;
    
            LLI vet[tam];
    
            for(i = 0; i < tam; i++)
                    vet[i] = 0;
    
            for(i = 0; i < p; i++){
                    scanf("%lld",&aux);
                    vet[aux] += 1;
            }
            cont = 0;
    
            for(i = 0; i < tam; i++){
                 if(vet[i] > 1)
                    cont++;
            }
                printf("%lld\n",cont);          
        }
        return 0;
    }

    Passa em todos casos de testes aki postados

  • Felipe Zeiser replied 6 years ago

    Gabriel não entendi muito bem me explica de novo hehe

  • Gabriel Duarte replied 6 years ago

    Olá, seu código contém alguns erros, primeiro você deve inicializar as suas várias com zero para não ficar com lixo, o c e o bil, segundo acho que a forma mais simples de fazer seria você incrementar o seu bil no mesmo for de leitura e depois disso faria outro laço percorrendo o bil e quando você achasse um campo com valores maiores que 1, acrescentava a sua variável c.

    Lembre-se de uma coisa, os valores que serão lidos estão entre 1 e N, então seu laço de verificação não poderá ser de 0 a N-1 e sim de 1 a N.

    MOD
  • Felipe Zeiser replied 6 years ago

    Tem como me ajudar aqui nesse código

    #include<stdio.h>
    
    int main(){
        int a,b,c,d;
        int i;
        int bil[10000];
        while(1){
    
            scanf("%d %d",&a,&b);
    
            if (a==0 && b==0) break;
    
            for(i=0;i<b;i++){
    
             scanf("%d",&d);
             if(bil[d]==1) c++;
             bil[d]++;
    
            }
            printf("%d\n",c);
        }
    
    }
  • Paulo Moggi replied 6 years ago

    Refiz a lógica por que aquela nem eu entendia mais ^^ Consegui acertar. Obrigado pela ajuda.

  • Cristhian Bonilha replied 6 years ago

    Não entendi muito bem sua lógica, Paulo.

    Note que a variável t era um indice na primeira iteração dos laços em N, ou seja, ela não foi inicializada, acredito eu, conforme você desejava.

    E uma vez que você encontra dois valores repetidos, você termina o laço, de forma que a identificação de um terceiro valor repetido torne-se impossível.

  • Paulo Moggi replied 6 years ago

    Devo estar cego ou simplesmente não sei a lógica ^^ Mas se alguém puder me ajudar, testei todos casos a cima e deram certo... OBS: Wrong answer

    RESOLVIDO!
  • Cristhian Bonilha replied 7 years ago

    Bom, há N maneiras de se resolver. Experimenta usar um vetor para armazenar quantas vezes cada bilhete aparece..

  • Cristhian Bonilha replied 7 years ago

    WA é resposta errada mesmo, o teu programa foi até o final, mas deu a resposta errada.

  • Rafael Viana replied 7 years ago

    Obrigado, com as saídas maiores achei o problema no meu código.

  • Rafael Viana replied 7 years ago

    Estou recebendo Wrong Answer para esta questão, tenho testado com o conjunto de entradas abaixo, e a saída esta sendo a mesma do Toolkit. Poderiam me passar mais alguns casos de testes de entrada para testar o meu problema?

    INPUT 5 5 3 3 1 2 4 6 10 6 1 3 6 6 4 2 3 1 2 6 10 6 6 6 6 6 6 6 6 6 6 9 9 1 2 3 4 5 6 7 8 9 0 0

    OUTPUT 1 4 1 0

  • Jean Bez replied 7 years ago

    Sem problemas já corrigimos o arquivo. A gente também acabou lendo e não reparamos. =)

  • Cristhian Bonilha replied 7 years ago

    Eu formatei esse problema, e peço perdão pelo erro. O word não estava configurado para as palavras do dicionário inglês, então o "an" ele corrigiu para "na".

  • Jean Bez replied 7 years ago

    Obrigado pelo aviso! Já foi corrigido.

    Se for possível insira nos Feedbacks, que fica mais fácil para nós verificarmos e corrigirmos, já que no Forum há muitos tópicos, e não há tempo de acompanhar todos.

  • Julio replied 7 years ago

    Eu não sei se é melhor sugerir correções de enunciado aqui ou continuar mandando emails para o admin. Qualquer coisa deletem este post.

    Edite o enunciado: "s/that attracted suck na audience/that attracket such an audience/" O texto original pode ser encontrado na internet.

    Edit: (Eita! Não da para deletar meu post, só o texto.)