Cod sursa(job #2863566)

Utilizator backleventeBack Levente backlevente Data 6 martie 2022 21:31:26
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

#define ll long long

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

ll n, m;
vector <ll> x;

int main(){
  fin >> n;

  x.resize(n + 1);

  for(ll i = 1; i <= n; ++i)
    fin >> x[i];

  fin >> m;

  for(ll i = 1, query, num; i <= m; ++i){
    fin >> query >> num;
    ll upper = upper_bound(x.begin(), x.end(), num) - x.begin();
    ll lower = lower_bound(x.begin(), x.end(), num) - x.begin();
    if(query == 0){
      fout << upper - 1;
    }
    else if(query == 1) {
      if(x[upper - 1] == num)
        fout << upper - 1;
      else 
        fout << lower;
    }
    else if(query == 2) { 
      fout << lower;
    }
    fout << "\n";
  } 

  return 0;
}