Cod sursa(job #1798659)

Utilizator mateilmatei lascu mateil Data 5 noiembrie 2016 12:40:15
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

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