Cod sursa(job #1587898)

Utilizator RazvanatorHilea Razvan Razvanator Data 2 februarie 2016 17:33:50
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int v[100001],n;

int caut0(int x)
{
    int pas=1<<16,i=0;
    while (pas!=0) {
        if (i+pas<=n && v[i+pas]<=x) i+=pas;
        pas/=2;
    }
    if (i==0) return -1;
    return i;
}

int caut1(int x)
{
    int pas=1<<16,i=0;
    while (pas!=0) {
        if (i+pas<=n && v[i+pas]<=x) i+=pas;
        pas/=2;
    }
    return i;
}

int caut2(int x)
{
    int pas=1<<16,i=0;
    while (pas!=0) {
        if (i+pas<=n && v[i+pas]<x) i+=pas;
        pas/=2;
    }
    return i+1;
}

int main()
{
    long long m,nr,x;
    fin>>n;
    for (int i=1;i<=n;i++) fin>>v[i];
    fin>>m;
    for (int i=0;i<m;i++) {
        fin>>nr>>x;
        if (nr==0) fout<<caut0(x)<<'\n';
        else if (nr==1) fout<<caut1(x)<<'\n';
            else if (nr==2) fout<<caut2(x)<<'\n';
    }
}