Cod sursa(job #2453938)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 6 septembrie 2019 16:47:48
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.51 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin  ("cautbin.in");
ofstream fout ("cautbin.out");

int n, m, v[100005], x, q, st, dr, mid;

void solutie(){

      fin>>n;
      for(int i=1; i<=n; i++)
            fin>>v[i];
      fin>>m;

      for(int i=1; i<=m; i++){
            fin>>q>>x;
            st=1;
            dr=n;

            if(q == 0){
                  while(st <= dr){
                        mid=(st + dr)/2;

                        if(v[mid] <= x)
                              st=mid+1;
                        else
                              dr=mid-1;
                  }
                  if(v[dr] == x)
                        fout<<dr<<"\n";
                  else
                        fout<<-1<<"\n";
            }
            if(q == 1){
                  while(st <= dr){
                        mid=(st + dr)/2;

                        if(v[mid] <= x)
                              st=mid+1;
                        else
                              dr=mid-1;
                  }
                  fout<<dr<<"\n";
            }
            if(q == 2){
                  while(st <= dr){
                        mid=(st + dr)/2;

                        if(v[mid] >= x)
                              dr=mid-1;
                        else
                              st=mid+1;
                  }
                  fout<<st<<"\n";
            }
      }
      return;
}

int main (){
      solutie();
      return 0;
}