Cod sursa(job #2876886)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 23 martie 2022 19:23:16
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <stdio.h>
#include <stdlib.h>
int v[100001];
int main()
{
    int n,i,q,s,x,pas,k;
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d",&n);
    for(i=1; i<=n; i++)
        scanf("%d",&v[i]);
    scanf("%d",&q);
    for(k=1; k<=q; k++)
    {
        scanf("%d%d",&s,&x);
        if(s==0 || s==1)
        {
            i=0;
            pas=1<<30;
            while(pas!=0)
            {
                if(i+pas<=n && v[i+pas]<=x)
                    i+=pas;
                pas/=2;
            }
            if(s==1 || (s==0 && v[i]==x))
                printf("%d\n",i);
            else
                printf("-1\n");
        }
        else
        {
            i=0;
            pas=1<<30;
            while(pas!=0)
            {
                if(i+pas<=n && v[i+pas]<x)
                    i+=pas;
                pas/=2;
            }
            printf("%d\n",i+1);
        }
    }

    return 0;
}