TÓPICO

100% WA com todos os casos de teste funcionando

Eduardo Ribeiro perguntou 1 ano atrás

Todos os casos do uDebug e uns que eu fiz funcionam perfeitamente, mas quando envio ao URI ele da 100% Wrong Answer.

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

int compara(const void *p1, const void *p2);

int main()
{
    int i, j, quantmar, marmores[10002], quantcons, cons, cn = 1;

    scanf("%d %d", &quantmar, &quantcons);
    while(!(quantmar == 0 && quantcons == 0))
    {
        for(i=0;i<quantmar && quantmar != 0 ;i++)
            scanf("%d", &marmores[i]);

        qsort(marmores, quantmar, sizeof(int), compara);

        if(quantcons == 0)
        {
            printf("CASE# %d:\n", cn);
            cn++;
        }
        for(i=0;i<quantcons;i++)
        {
            scanf("%d", &cons);

            if(quantmar == 0)
            {
                    printf("CASE# %d:\n", cn);
                    cn++;
                    printf("%d not found\n", cons);
                    break;
            }

            for(j=0;j<quantmar;j++)
            {
                if(i==0 && j==0)
                {
                    printf("CASE# %d:\n", cn);
                    cn++;
                }
                if(cons == marmores[j])
                {
                    printf("%d found at %d\n", cons, j+1);
                break;
                }
                if(cons != marmores[quantmar] && j == quantmar-1)
                    printf("%d not found\n", cons);
            }
        }
        scanf("%d %d", &quantmar, &quantcons);
    }
    return 0;
}

int compara(const void *p1, const void *p2)
{   
    int *i = (int *)p1, *j = (int *)p2;

    if (*i < *j)
        return -1;
    else
        if(*i == *j)
            return 0;
        else
            return 1;
}

Lembre de não publicar soluções. Sua publicação pode ser revisada por nossos moderadores.

  • Welton 🎈🎖💻🥇👻☕🌠⚡ respondido 1 ano atrás

    Cara eu tô com o mesmo problema, também não sei :/ tÔ tentando em C

    #include <stdio.h>
    
    int primeiro(int arr[], int indice){
        int i=indice,valor=arr[indice];
        while(arr[i]==valor&&i>=0){
            i--;
        }
        if(i==0){
            return 0;
        }else{
            i++;
            return i;
        }
    }
    
    int binarySearch(int arr[], int l, int r, int x) 
    { 
       if (r >= l) 
       { 
            int mid = l + (r - l)/2; 
    
            if (arr[mid] == x){
                return primeiro(arr,mid); 
             }
    
            if (arr[mid] > x)  
                return binarySearch(arr, l, mid-1, x); 
    
            return binarySearch(arr, mid+1, r, x); 
       } 
    
       return -1; 
    } 
    
    void quick(int vet[], int esq, int dir){
        int pivo = esq, i,ch,j;         
        for(i=esq+1;i<=dir;i++){        
            j = i;                      
            if(vet[j] < vet[pivo]){     
                ch = vet[j];               
                while(j > pivo){           
                    vet[j] = vet[j-1];      
                    j--;                    
                }
                vet[j] = ch;               
                pivo++;                    
            }
        }
        if(pivo-1 >= esq){              
            quick(vet,esq,pivo-1);      
        }
        if(pivo+1 <= dir){              
            quick(vet,pivo+1,dir);      
        }
     }
    
    int main()
    {
        int n=1,q=1,marmores[10001],i,j,resultado,consulta,caso=0;
      scanf("%d%d",&n,&q);
        while(n!=0||q!=0){
            caso++;
            for (i = 0; i < n; ++i)
            {
                scanf("%d",&marmores[i]);
            }
            quick(marmores,0,n-1);
            printf("CASE# %d:\n", caso);
            for (i = 0; i < q; ++i)
            {
                scanf("%d",&consulta);
                resultado=binarySearch(marmores, 0, n-1, consulta);
                if(resultado==-1){
                    printf("%d not found\n", consulta);
                }else{
                    printf("%d found at %d\n", consulta,resultado+1);
                }
            }
        scanf("%d%d",&n,&q);
    
        }
        return 0;
    }