Cod sursa(job #1162799)

Utilizator bogdanboboc97Bogdan Boboc bogdanboboc97 Data 31 martie 2014 23:24:30
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>

using namespace std;

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

int v[100005],m,st,dr,ok,poz;

int main()
{
    int k,i,x,op,n;
    fin>>n;
    for(i=1;i<=n;i++)fin>>v[i];
    fin>>k;
    for(i=1;i<=k;i++)
    {
        fin>>op>>x;
        dr=n;st=1;ok=0;
        while(st<=dr && !ok)
        {
            m=(st+dr)/2;
            if(v[m]==x)poz=m,ok=1;
            if(v[m]>x)dr=m-1;
            if(v[m]<x)st=m+1;
        }
        if(op==0)
        {
            if(ok==0)fout<<-1;
            else{
                while(v[poz]==x)poz++;
                fout<<poz-1<<'\n';}
        }
        if(op==1)
        {
            if(v[poz]==x){
            while(v[poz]==x)poz++;
            fout<<poz-1<<'\n';}
            else
            fout<<poz<<'\n';
        }
        if(op==2)
        {
           if(v[poz]==x){
            while(v[poz]==x)poz--;
            fout<<poz+1<<'\n';}
            else
            fout<<poz<<'\n';
        }
    }
    return 0;
}