Cod sursa(job #1648703)

Utilizator mihai2003LLL LLL mihai2003 Data 11 martie 2016 11:22:07
Problema Cautare binara Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>

int v[100001];

int main()
{
    FILE *fin,*fout;
    int n,i,x,m,j,a,b;
    fin=fopen("cautbin.in","r");
    fout=fopen("cautbin.out","w");
    fscanf(fin,"%d", &n);
    for (i=1;i<=n;++i)
        fscanf(fin,"%d", &v[i]);
    for (x=1;x<=n;x<<=1);
    fscanf(fin,"%d", &m);
    while (m--) {
        fscanf(fin,"%d%d", &a, &b);
        if (a<2) {
            i=0;
            for (j=x;j;j>>=1)
                if (i+j<=n && v[i+j]<=b)
                    i=i+j;
            if (a==0 && v[i]!=b)
                fprintf(fout,"-1\n");
            else
                fprintf(fout,"%d\n", i);
        }
        else {
            i=n;
            for (j=x;j>0;j>>=1)
                if (i-j>0 && v[i-j]>=b)
                    i=i-j;
            fprintf(fout,"%d\n", i);
        }
    }
    return 0;
}