Cod sursa(job #3267825)

Utilizator pacelaaaCiurea Pavel pacelaaa Data 12 ianuarie 2025 15:10:49
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.39 kb
#include <fstream>

using namespace std;

#define Nmax 100000
int v[Nmax];

int main()
{
    ifstream fin ( "cautbin.in" );
    ofstream fout ( "cautbin.out" );
    int n, m, i, x, first, last, mid;
    char operatie;

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

    for ( i = 0; i < m; i ++ ) {
      fin >> operatie >> x;
      if ( operatie - '0' == 0 ) {
        first = 0;
        last = n;
        while ( (last - first) > 1 ) {
          mid = (first + last) / 2;
          if ( v[mid] > x )
            last = mid;
          else
            first = mid;
        }
        if ( v[first] == x )
          fout << first + 1 << "\n";
        else
          fout << -1 << "\n";
      } else if ( operatie - '0' == 1 ) {
        first = 0;
        last = n;
        while ( last - first > 1 ) {
          mid = ( first + last ) / 2;
          if ( v[mid]  > x )
            last = mid;
          else
            first = mid;
        }
         fout << first + 1 << "\n";
      } else {
          first = -1;
          last = n -1;
          while ( last - first > 1 ) {
            mid = (first + last ) / 2;
            if ( v[mid] < x )
              first = mid;
            else
              last = mid;
          }
          fout << last + 1 << "\n";
      }
    }
    fin.close();
    fout.close();

    return 0;
}