Cod sursa(job #1798687)

Utilizator mateilmatei lascu mateil Data 5 noiembrie 2016 12:52:21
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

using namespace std;
int v[100001];
int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    long long n,i,m,k,x,r,pas,p;
    f>>n;
    for(i = 1; i <= n; i++)
     f>>v[i];
    f>>m;
    p = 1;
    while(p < n)
     p = p * 2;
    for(i = 1; i <= m; i++){
      f>>k>>x;
      r = 0;
      pas = p;
      if(k == 0){
        while(pas != 0){
         if(r + pas <= n && v[r + pas] <=x ){
          r = r + pas;
         }
         pas/=2;
        }
        if(v[r] == x)
         g<<r;
        else
         g<<-1;
        g<<"\n";
      }
      if(k==1){
        while(pas!=0){
         if(r + pas <= n && v[r + pas] <= x){
          r = r + pas;
         }
         pas = pas / 2;
        }
        g<<r<<"\n";
      }
      if(k == 2){
        while(pas!=0){
         if(r + pas <= n && v[r + pas] < x){
          r = r + pas;
         }
         pas = pas / 2;
        }
        g<<r+1<<"\n";
      }
    }
    return 0;
}