Cod sursa(job #2837738)

Utilizator PechiPecherle George Pechi Data 22 ianuarie 2022 14:32:36
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include<bits/stdc++.h>

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

vector<int> v;
int n;

void solve_test()
{
  int tip,x;
  fin>>tip>>x;
  if(!tip)
  {
    auto caut = upper_bound(v.begin(),v.end(),x);
    int sol = (caut - v.begin());
    if(sol>v.size()-1) //daca nu avem x in vector
      sol = -1;
    fout<<sol<<'\n';
  }
  else
    if(tip==1)
    {
      auto caut = upper_bound(v.begin(),v.end(),x);
      int sol = (caut - v.begin());
      fout<<sol<<'\n';
    }
    else
    {
      auto caut = lower_bound(v.begin(),v.end(),x);
      int sol = (caut - v.begin());
      fout<<sol+1<<'\n';
    }
}


void citire()
{
  fin>>n;
  v.resize(n);
  for(int i=0;i<n;i++)
    fin>>v[i];
  int t;
  fin>>t;
  while(t--)
    solve_test();
}

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