Cod sursa(job #1736131)

Utilizator AllenWalkerAllen Walker AllenWalker Data 1 august 2016 11:46:17
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.32 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in ("cautbin.in");
ofstream out("cautbin.out");
int v[100002];
int n,m;

void task1(int stg, int dr, int x)
{
    int poz=-1;
    while(stg<=dr)
    {
        int mij=stg+(dr-stg)/2;
        if(x>v[mij])
            stg=mij+1;
        else
            if(x<v[mij])
                dr=mij-1;
            else
            {
                poz=mij;
                stg=mij+1;
            }
    }
    out<<poz<<'\n';
}

void task2(int stg, int dr, int x)
{
    int poz=-1;
    while(stg<=dr)
    {
        int mij=stg+(dr-stg)/2;
        if(x>=v[mij])
        {
            poz=mij;
            stg=mij+1;
        }
        else
            dr=mij-1;
    }
    out<<poz<<'\n';

}

void task3(int stg, int dr, int x)
{
    int poz=-1;
    while(stg<=dr)
    {
        int mij=stg+(dr-stg)/2;
        if(x<=v[mij])
        {
            poz=mij;
            dr=mij-1;
        }
        else
            stg=mij+1;
    }
    out<<poz<<'\n';

}

int main()
{
    in>>n;
    int i,a,b;
    for(i=1; i<=n; i++)
        in>>v[i];
    in>>m;
    for(i=0; i<m; i++)
    {
        in>>a>>b;
        if(a==0)    task1(1,n,b);
        if(a==1)    task2(1,n,b);
        if(a==2)    task3(1,n,b);
    }
    return 0;
}