Cod sursa(job #2757128)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 3 iunie 2021 23:35:52
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
  freopen("cautbin.in", "r", stdin);
  freopen("cautbin.out", "w", stdout);

  int N;
  scanf("%d", &N);

  vector<int> v(N);
  for (int i = 0; i < N; ++i)
    scanf("%d", &v[i]);

  int M;
  scanf("%d", &M);
  for (int t = 0; t < M; ++t) {
    int op, val;
    scanf("%d%d", &op, &val);

    if (op == 0) {
      int pz = upper_bound(v.begin(), v.end(), val) - v.begin();
      if (pz > 0 && v[pz - 1] == val)
	printf("%d\n", pz);
      else
	printf("-1\n");
      continue;
    }

    if (op == 1) {
      int pz = lower_bound(v.begin(), v.end(), val + 1) - v.begin();
      printf("%d\n", pz);
      continue;
    }

    int pz = upper_bound(v.begin(), v.end(), val - 1) - v.begin();
    printf("%d\n", pz + 1);
    
  }
  
  return 0;
}