Cod sursa(job #2639156)

Utilizator isa_tudor_andreiAndrei Tudor isa_tudor_andrei Data 31 iulie 2020 16:40:04
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>

using namespace std;

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

const int NMAX = 1e5;

int v[NMAX + 1];

int cb( int x, int n ) {
  int pas = 1<<19;
  int r = 0;
  while( pas ) {
    pas /= 2;
    if( r + pas <= n && v[r + pas] <= x )
      r += pas;
  }
  return r;
}

int main() {
    int n, m;
    fin>>n;
    for( int i = 1; i <= n; i ++ )
      fin>>v[i];
    fin>>m;
    for( int i = 1; i <= m; i ++ ) {
      int tip, x;
      fin>>tip>>x;
      if( tip < 2 ) {
        int poz = cb(x, n);
        if( tip == 0 && v[poz] != x )
          fout<<"-1\n";
        else
          fout<<poz<<"\n";
      }
      else {
        int poz = cb(x - 1, n);
        fout<<poz + 1<<"\n";
      }
    }
    return 0;
}