Cod sursa(job #1692352)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 20 aprilie 2016 18:57:05
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>
#define MAXN 100000
int v[MAXN+2];
int main(){
    FILE*fi,*fout;
    int n,i,m,rez,pas,t,x;
    fi=fopen("cautbin.in" ,"r");
    fout=fopen("cautbin.out" ,"w");
    fscanf(fi,"%d" ,&n);
    for(i=1;i<=n;i++)
      fscanf(fi,"%d" ,&v[i]);
    fscanf(fi,"%d" ,&m);
    for(i=0;i<m;i++){
       fscanf(fi,"%d%d" ,&t,&x);
       if(t==0){
          rez=0;
          for(pas=1<<18;pas;pas>>=1)
             if(rez+pas<=n&&v[rez+pas]<=x)
               rez+=pas;
          if(v[rez]!=x)
            fprintf(fout,"-1\n");
          else
            fprintf(fout,"%d\n" ,rez);
       }
       if(t==1){
          rez=0;
          for(pas=1<<18;pas;pas>>=1)
             if(rez+pas<=n&&v[rez+pas]<=x)
               rez+=pas;
          fprintf(fout,"%d\n" ,rez);
       }
       if(t==2){
          rez=0;
          for(pas=1<<18;pas;pas>>=1)
             if(rez+pas<=n&&v[rez+pas]<x)
               rez+=pas;
          fprintf(fout,"%d\n" ,rez+1);
       }
    }
    fclose(fi);
    fclose(fout);
    return 0;
}