Cod sursa(job #1424818)

Utilizator AndreiFlorescuAndrei Florescu AndreiFlorescu Data 25 aprilie 2015 15:45:19
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.47 kb
#include <fstream>

using namespace std;

ifstream file_in("cautbin.in");
ofstream file_out("cautbin.out");

int main()
{
    /*int n, i = 0, m, tip, pas, sir[100001], x;
    file_in >> n;
    for(int j = 0; j < n; j++)
    {
        file_in >> sir[j];
    }
    file_in >> m;
    for(int j = 0; j < m; j++)
    {
        file_in >> tip >> x;
        pas = 1 << 16;
        if(tip == 0 || tip == 1)
        {
            i = 0;
            while(pas != 0)
            {
                if((i + pas) < n && sir[i+pas-1] <= x)
                    i+=pas;
                pas/=2;
            }
            if(tip == 0 && sir[i-1]!=x)
                file_out << -1 << "\n";
            else
                file_out << i << "\n";
        }
        else
        {
            i=0;
            while(pas!=0)
            {
                if((i+pas)<=n && sir[i+pas-1]<x)
                    i+=pas;
                pas/=2;
            }
            file_out << i+1 <<"\n";
        }
    }
    return 0;*/
    int n,m,i,j,a,x,L,pas;
    f>>n;
    for(i=1;i<=n;i++)f>>v[i];
    f>>m;
    for(j=1;j<=m;j++)
    {
    f>>a>>x;
     pas=1<<16;
     if(a==0||a==1)
     { i=0;
       while(pas!=0)
       {
       if((i+pas)<=n&&v[i+pas]<=x)i+=pas;
       pas/=2;}
       if(a==0&&v[i]!=x)g<<-1<<'\n';
       else g<<i<<'\n';
     }
     else if(a==2)
     {
       i=0;
       while(pas!=0)
       {
         if((i+pas)<=n&&v[i+pas]<x)i+=pas;
         pas/=2;
       }
       g<<i+1<<'\n';
     }
    }
return 0;
}