Cod sursa(job #1736129)

Utilizator AllenWalkerAllen Walker AllenWalker Data 1 august 2016 11:42:27
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 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])
        {
            poz=mij;
            stg=mij+1;
        }
        else
            dr=mij-1;
    }
    out<<poz<<'\n';
}

void task2(int stg, int dr, int x)
{
    int poz;
    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;
    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;
}