Cod sursa(job #950300)

Utilizator AnonymouslegionAnonymous Anonymouslegion Data 16 mai 2013 15:23:12
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<fstream>

using namespace std;

const int kstart = 1 << 16;

int array[100005];

int main(){
  ifstream in("cautbin.in");
  ofstream out("cautbin.out");

  int n;

  in >> n;

  for(int i = 1; i <= n; ++i)
    in >> array[i];

  int m;

  in >> m;

  for(int i = 1; i <= m; ++i){
    int tip, query;

    in >> tip >> query;

    int ans = 0;

    if(tip == 2)
      --query;

    for(int i = kstart; i; i >>= 1)
      if(ans + i <= n)
        if(array[ans + i] <= query)
          ans += i;

    if(tip == 0)
      if(array[ans] != query)
        ans = -1;
    if(tip == 2 && array[ans + 1] == query + 1)
      ++ans;

    out << ans << "\n";
  }

  return 0;
}