Cod sursa(job #2277381)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 6 noiembrie 2018 08:57:50
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
using namespace std;

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

int n,m,i,t,x,st,mid,dr,v[100010];

int main(){
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];

    for(fin>>m;m;m--){
        fin>>t>>x;
        st=1; dr=n;
        if(t==0){
            while(st<=dr){
                mid=(st+dr)/2;
                if(v[mid]>x){
                    dr=mid-1;
                }else{
                    st=mid+1;
                }
            }

            if(v[dr]!=x)
                fout<<-1<<"\n";
            else
                fout<<dr<<"\n";
        }

        if(t==1){
            while(st<=dr){
                mid=(st+dr)/2;
                if(v[mid]>x){
                    dr=mid-1;
                }else{
                    st=mid+1;
                }
            }

            fout<<dr<<"\n";
        }

        if(t==2){
            while(st<=dr){
                mid=(st+dr)/2;
                if(v[mid]<x){
                    st=mid+1;
                }else{
                    dr=mid-1;
                }
            }

            fout<<st<<"\n";
        }
    }

    return 0;
}