Cod sursa(job #1596619)

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

using namespace std;

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

const int nmax = 100005;
int v[nmax], 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()
{
    ios_base::sync_with_stdio(false);
    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;
}