Cod sursa(job #2062241)

Utilizator herbertoHerbert Mohanu herberto Data 10 noiembrie 2017 09:39:16
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
using namespace std;
#define L 16
#define MAXN 100001

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