Cod sursa(job #3237552)

Utilizator tsg38Tsg Tsg tsg38 Data 9 iulie 2024 22:31:46
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

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

const int DIM = 1e5 + 1;

int v[DIM];

int main() {
  ios_base::sync_with_stdio(0);
  fin.tie(0);
  int n, q, tp, x;
  
  fin >> n;
  for ( int i = 1; i <= n; ++i ) {
	fin >> v[i];
  }
  fin >> q;
  while ( q-- ) {
	fin >> tp >> x;
	int l = 1, r = n + 1;
	while ( r - l > 1 ) {
	  int mid = (l + r) / 2;
	  if ( v[mid] <= x ) {
		l = mid;
	  } else {
		r = mid;
	  }
	} 
	if ( tp == 0 ) {
	  fout << (v[l] == x ? l : -1) << "\n";
	} else if ( tp == 1 ) {
	  fout << l << "\n";
	} else {
	  l = 0, r = n;
	  while ( r - l > 1 ) {
		int mid = (l + r) / 2;
		if ( v[mid] < x ) {
		  l = mid; 
		} else {
		  r = mid;
		}
	  }
	  fout << r << "\n";
	}
  }
  fin.close();
  fout.close();
  return 0;
}