Cod sursa(job #2803520)

Utilizator Cristian1231213Petre Cristian Cristian1231213 Data 20 noiembrie 2021 10:08:22
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;

int n , i , a[100005], m , x , y , d;
ifstream f("cautbin.in");
ofstream g("cautbin.out");

int hei0(int n , int a[] , int x)
{
    int s , d , m , poz ;
    s=1;
    d=n;
    while(s<=d){
        m=(s+d)/2;
        if(a[m]<=x){
            if(a[m]==x)poz=m;
            s=m+1;
        }
        else d=m-1;
    }
    return poz ;
}
int hei1(int n , int a[] , int x)
{
    int s , d , m , poz ;
    s=1;
    d=n;
    while(s<=d){
        m=(s+d)/2;
        if(a[m]<=x)poz=m,s=m+1;
        else d=m-1;
    }
    return poz;
}
int hei2(int n , int a[] , int x)
{
    int s , d , m ,poz ;
    s=1;
    d=n;
    while(s<=d){
        m=(s+d)/2;
        if(a[m]>=x)poz=x,d=m-1;
        else s=m+1;
    }
    return poz;
}
int main()
{
    f >> n ;
    for(i=1;i<=n;i++)f >> a[i];
    f >> m ;
    for(i=1;i<=m;i++){
        f >> y >> x ;
        if(y==0)d=hei0(n,a,x);
        else if(y==1)d=hei1(n,a,x);
        else if(y==2)d=hei2(n,a,x);
        g << d << '\n';
    }
}