Cod sursa(job #2883319)

Utilizator Cristian1231213Petre Cristian Cristian1231213 Data 1 aprilie 2022 13:35:55
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>

using namespace std;

int n , i , x , a[100005], m , dr , st , q , poz=-1 , mij;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int main()
{
    f >> n ;
    for(i=1;i<=n;i++)f >> a[i];
    f >> m ;
    for(i=1;i<=m;i++){
        f >> q >> x ;
        poz=-1;
        if(q==0){
            dr=1;
            st=n;
            while(dr<=st){
                mij=(dr+st)/2;
                if(a[mij]<x)dr=mij+1;
                else if(a[mij]==x)poz=mij,dr=mij+1;
                else if(a[mij]>x)st=mij-1;
            }
            g << poz << '\n';
        }
        else if(q==1){
            dr=1;
            st=n;
            while(dr<=st){
                mij=(dr+st)/2;
                if(a[mij]<=x)poz=mij,dr=mij+1;
                else if(a[mij]>x)st=mij-1;
            }
            g << poz << '\n';
        }
        else if(q==2){
            dr=1;
            st=n;
            while(dr<=st){
                mij=(dr+st)/2;
                if(a[mij]>=x)poz=mij,st=mij-1;
                else if(a[mij]<x)dr=mij+1;
            }
            g << poz << '\n';
        }
    }
}