Cod sursa(job #1217914)

Utilizator VictorDumitrescuDumitrescu Victor VictorDumitrescu Data 8 august 2014 18:46:56
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <stdio.h>

FILE *f,*g;
#define MAX_N 100001
int v[MAX_N];
int main()
{int n,m,i,pas,t,x,j;
    f=fopen("cautbin.in","r");
    g=fopen("cautbin.out","w");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(f,"%d",&v[i]);
    fscanf(f,"%d",&m);
    for(j=1;j<=m;j++){
        fscanf(f,"%d%d",&t,&x);
        if(t==0){
            i=0;
            pas=1<<16;
            while(pas>0) {
                if (i + pas <= n) {
                    if (v[i + pas] <= x) {
                        i = i + pas;
                    }
                }
                pas = pas >> 1;
            }
            if (v[i]==x) {
                fprintf(g,"%d\n",i);
            } else {
                fprintf(g,"-1\n");
            }
        } else if (t == 1) {
            i=0;
            pas=1<<16;
            while(pas>0) {
                if (i + pas <= n) {
                    if (v[i + pas] <= x) {
                        i = i + pas;
                    }
                }
                pas = pas >> 1;
            }
            fprintf(g,"%d\n",i);
        } else {
            i=0;
            pas=1<<16;
            while(pas>0) {
                if (i + pas <= n) {
                    if (v[i + pas] < x) {
                        i = i + pas;
                    }
                }
                pas = pas >> 1;
            }
            ++i;
            fprintf(g,"%d\n",i);
        }
    }
    return 0;
}