Cod sursa(job #2801186)

Utilizator Cristian1231213Petre Cristian Cristian1231213 Data 15 noiembrie 2021 14:16:40
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <bits/stdc++.h>

using namespace std;

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

int n , i , m , x , a[100005], nr , y , z;

int ceva0(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 s=m+1;
        }
        else d=m-1;
    }
    return poz;
}
int ceva1(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 s=m+1;
        }
        else d=m-1;
    }
    return poz;
}
int ceva2(int a[], int x)
{
    int s , d , m , poz ;
    s=1;
    d=n;
    while(s<=d){
        m=(d+s)/2;
        if(a[m]>=x){
            if(a[m]==x)d=m-1,poz=m;
            else 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)z=ceva0(a,x);
            else if(y==1)z=ceva1(a,x);
            else if(y==2)z=ceva2(a,x);
            g << z << '\n';
    }
}