Cod sursa(job #1596609)

Utilizator Marius200099Fica Marius Marius200099 Data 11 februarie 2016 11:04:43
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>

using namespace std;

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

int v[100001];
int n;

int ff0 (int x)
{

    int st=1;
    int dr=n;
    int mij;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij]<=x) st=mij+1;
        else dr= mij-1;
    }
    if(v[dr]==x) return dr;
    else return -1;
}

int ff1 (int x)
{
    int st=1;
    int dr=n;
    int mij;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij]<=x) st=mij+1;
        else dr= mij-1;
    }
    return dr;
}

int ff2 (int x)
{
    int st=1;
    int dr=n;
    int mij;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij]<x) st=mij+1;
        else dr= mij-1;
    }
    return st;
}

int main()
{
    int m,i,poz=0;
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    int x,y;
    in>>m;
    for( i=1;i<=m;i++)
     {
         in>>y>>x;
         if(y==0) out<<ff0(x)<<"\n";
         if(y==1) out<<ff1(x)<<"\n";
         if(y==2) out<<ff2(x)<<"\n";
     }
    return 0;
}