Cod sursa(job #1424798)

Utilizator WhiteStormPopovici Stefan WhiteStorm Data 25 aprilie 2015 15:33:36
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int main()
{
    int n,m,i,j,tip,x,pas;
    in>>n;
    int v[n+1];
    for(i=1;i<=n;i++) in>>v[i];
    in>>m;
    for(j=1;j<=m;j++)
    {
        in>>tip>>x;
        pas=1<<16;
        if(tip==0 || tip==1)
         {
           i=0;
           while(pas)
           {
               if(i+pas<=n && v[i+pas]<=x) i+=pas;
               pas>>=1;
           }
           if(tip==0 && v[i]!=x) out<<"-1\n";
           else out<<i<<"\n";
         }
         else if(tip==2)
         {
          i=0;
          pas=1<<16;
          while(pas)
          {
             if(i+pas<=n && v[i+pas]<x)i+=pas;
             pas>>=1;
          }
          out<<i+1<<"\n";
         }
    }
    in.close();
    out.close();
    return 0;
}