Cod sursa(job #1991028)

Utilizator humastefan19Huma Stefan humastefan19 Data 14 iunie 2017 18:14:22
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>

#include<fstream>

using namespace std;

int a[100000], n, m,x,y;

int caut0(int x)
{
    int r=0, pas=1<<16;
    while(pas!=0)
      {
         if(r+pas<=n && a[r+pas]<=x)
            {
                r+=pas;
            }
            pas/=2;
      }
      if(a[r]!=x)
      {
          return -1;
      }
      else return r;
}
int caut1(int x)
{
    int r=0, pas=1<<16;
    while(pas!=0)
      {
         if(r+pas<=n && a[r+pas]<=x)
            {
                r+=pas;
            }
            pas/=2;
      }
      return r;
}
int caut2(int x)
{
    int r=0, pas=1<<16;
    while(pas!=0)
      {
         if(r+pas<=n && a[r+pas]<x)
            {
                r+=pas;
            }
            pas/=2;
      }

     return r+1;
}

int main()
{
    ifstream cin ("cautbin.in");
    ofstream cout ("cautbin.out");
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    cin>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>x>>y;
        if(x==0)
        {
            cout<<caut0(y)<<endl;
        }
        else if(x==1)
        {
            cout<<caut1(y)<<endl;
        }
        else cout<<caut2(y)<<endl;
    }
    return 0;
}