Cod sursa(job #2856942)

Utilizator LuciBBadea Lucian LuciB Data 24 februarie 2022 17:09:26
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <stdio.h>

int v[100000];

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