Cod sursa(job #2774458)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 11 septembrie 2021 17:52:09
Problema Cautare binara Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include<stdio.h>
int n,m,i,v[100001],x,y,s,l;
int main()
{
    freopen("cautbin.in","r",stdin),freopen("cautbin.out","w",stdout),scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%d",v+i);
    for(scanf("%d",&m),l=1;l<=n;l<<=1);
    while(m--) {
        scanf("%d%d",&x,&y);
        if(x<2) {
            for(s=l,i=0;s;s>>=1)
                if(i+s<=n&&v[i+s]<=y)
                    i+=s;
            printf("%d\n",!x&&v[i]!=y?-1:i);
            continue;
        }
        for(s=l,i=n;s;s>>=1)
            if(i>s&&v[i-s]>=y)
                i-=s;
        printf("%d\n",i);
    }
    return 0;
}