Cod sursa(job #2065159)

Utilizator sabinantonSabin Anton sabinanton Data 13 noiembrie 2017 15:17:17
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,m,i,v[1000001],p;
int cb(int x)
{
    int pas=1<<16;
    int r=0;
    while(pas!=0)
    {
        if(r+pas<=n&&v[r+pas]<=x)r+=pas;
        pas/=2;
    }
    if(v[r]==x)return r;
    return -1;
}
int cb3(int x)
{
    int pas=1<<16;
    int r=0;
    while(pas!=0)
    {
        if(r+pas<=n&&v[r+pas]<x)r+=pas;
        pas/=2;
    }
    r++;
    return r;
}
int cb2(int x)
{
    int pas=1<<16;
    int r=0;
    while(pas!=0)
    {
        if(r+pas<=n&&v[r+pas]<=x)r+=pas;
        pas/=2;
    }
    return r;
}
int main()
{
    int x;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    fin>>m;
    for(i=1;i<=m;i++)
    {
        fin>>p>>x;
        if(p==0)fout<<cb(x)<<'\n';
        else if(p==1)fout<<cb2(x)<<'\n';
        else fout<<cb3(x)<<'\n';
    }
    return 0;
}