Cod sursa(job #2931135)

Utilizator cristina_cotorCristina Cotor cristina_cotor Data 30 octombrie 2022 16:26:35
Problema Cautare binara Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.65 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,x,y,M,i,st,dr,mij,a[100001];
fstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int main()
{
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>a[i];
    }
    fin>>M;
    for(i=1;i<=M;i++){
        fin>>x>>y;
        if(x==0){
           st=1;
           dr=n;
           while(st<=dr){
                mij=(st+dr)/2;
                if(a[mij]==y){
                   st=mij+1;
                }
                else if (a[mij]<y){
                    st=mij+1;
                }
                else{
                    dr=mij-1;
                }
           }
           if(a[dr]==y){
            fout<<dr;
           }
           else fout<<-1;
           fout<<endl;
        }
        else if (x==1){
            st=1;
            dr=n;
            while(st<=dr){
                mij=(st+dr)/2;
                if(a[mij]==y){
                    st=mij+1;
                }
                else if(a[mij]<y){
                    st=mij+1;
                }
                else {
                    dr=mij-1;
                }
            }
            fout<<dr;
            fout<<endl;
        }
        else if(x==2){
            st=1;
            dr=n;
            while(st<=dr){
                mij=(st+dr)/2;
                if(a[mij]==y){
                    dr=mij=1;
                }
                else if (a[mij]<y){
                    st=mij+1;
                }
                else{
                    dr=mij-1;
                }
            }
            fout<<st;
            fout<<endl;
        }
    }
    return 0;
}