Cod sursa(job #2883305)

Utilizator PeTrEiOnUt123415341Petre Ionut PeTrEiOnUt123415341 Data 1 aprilie 2022 13:27:50
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;

int n , i , a[100005] , m , st , dr , j , x , c , mij , p ;

ifstream f("cautbin.in") ;
ofstream g("cautbin.out") ;

int main()
{
    f >> n ;
    for(i=1;i<=n;i++) f >> a[i] ;
    sort(a+1 , a+n+1) ;
    f >> m ;
    for(i=1;i<=m;i++){
        f >> c >> x ;
        st=1 ;
        dr=n ;
        p=-1 ;
        if(c==0){
            while(st<=dr){
                mij=(st+dr)/2 ;
                if(a[mij]<=x){
                    if(a[mij]==x) p=mij ;
                    st=mij+1 ;
                }
                else dr=mij-1 ;
            }
        }
        if(c==1){
            while(st<=dr){
                mij=(st+dr)/2 ;
                if(a[mij]<=x){
                    p=mij ;
                    st=mij+1 ;
                }
                else dr=mij-1 ;
            }
        }
        if(c==2){
            while(st<=dr){
                mij=(st+dr)/2 ;
                if(a[mij]<x){
                    st=mij+1 ;
                }
                else if(a[mij]>=x) {
                    dr=mij-1 ;
                    p=mij ;
                }
            }
        }
        g << p << '\n' ;
    }
}