Cod sursa(job #1989185)

Utilizator rambocataAlbert Catalin rambocata Data 6 iunie 2017 14:06:45
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout("cautbin.out");
int n,m,i,a[100001],b,c,p,u,mid,ok;
int main(){
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];
    fin>>m;
    for(i=1;i<=m;i++){
        fin>>b>>c;
        //
        if(b==0){
            ok=0;
            p=1;
            u=n;
            while(p<=u){
                mid=(p+u)/2;
                if(a[mid]==c){
                    ok++;
                    p=mid+1;
                }
                else
                    if(a[mid]<c)
                        p=mid+1;
                    else
                        u=mid-1;
            }
            if(ok>0)
                fout<<u<<'\n';
            else
                fout<<"-1"<<'\n';
        }
        //
        if(b==1){
            p=1;
            u=n;
            while(p<=u){
                mid=(p+u)/2;
                if(a[mid]<=c)
                    p=mid+1;
                else
                    u=mid-1;
            }
            fout<<u<<'\n';
        }
        //

        if(b==2){
            p=1;
            u=n;
            while(p<=u){
                mid=(p+u)/2;
                if(a[mid]>=c)
                    u=mid-1;
                else
                    p=mid+1;
            }
            fout<<p<<'\n';
        }

    }

}