Mai intai trebuie sa te autentifici.

Cod sursa(job #2482236)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 27 octombrie 2019 22:09:57
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 100005;

int v[MAXN];

int cb(int l, int r, int x) {
  int last = 0;
  while (l <= r) {
    int med = (l + r) / 2;
    if (v[med] <= x) {
      last = med;
      l = med + 1;
    } else {
      r = med - 1;
    }
  }
  return last;
}

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

  int n, m;
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i)
    scanf("%d", &v[i]);
  scanf("%d", &m);
  for (int i = 1; i <= m; ++i) {
    int t, x, last;
    scanf("%d%d", &t, &x);
    if (t <= 1)
      last = cb(1, n, x);
    else
      last = cb(1, n, x - 1) + 1;
    if (t == 0 && v[last] != x)
      last = -1;
    printf("%d\n", last);
  }

  return 0;
}