Cod sursa(job #2850914)

Utilizator Vlad_NistorNIstor Vlad Vlad_Nistor Data 17 februarie 2022 19:26:02
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.48 kb
#include <bits/stdc++.h>
using namespace std;
int a[100000];
ofstream fout("cautbin.out");
ifstream fin("cautbin.in");
void c1(int n,int x){
    int st = 0;
    int dr = n-1;
    int poz = -1;
    int mid = 0;
    while(st <= dr){
        mid = (st+dr)/2;
        if(a[mid] == x){
            poz = mid+1;
            st = mid+1;
        }else if(a[mid] > x){
            dr = mid-1;
        }else if(a[mid] < x){
            st = mid+1;
        }
    }
    fout << poz << '\n';
}

void c2(int n,int x){
    int st = 0;
    int dr = n-1;
    int poz = -1;
    int mid = 0;
    while(st <= dr){
        mid = (st+dr)/2;
        if(a[mid] <= x){
            poz = mid+1;
            st = mid+1;
        }else if(a[mid] > x){
            dr = mid-1;
        }
    }
    fout << poz << '\n';
}

void c3(int n,int x){
    int st = 0;
    int dr = n-1;
    int poz = -1;
    int mid = 0;
    while(st <= dr){
        mid = (st+dr)/2;
        if(a[mid] >= x){
            poz = mid+1;
            dr = mid-1;
        }else if(a[mid] < x){
            st = mid+1;
        }
    }
    fout << poz << '\n';
}


int main(void){
    int n;
    fin >> n;
    for(int i =0;i<n;i++){
        fin >> a[i];
    }
    int q,x,y;
    fin >> q;
    for(int i =0;i<q;i++){
        fin >> x >> y;
        if(x == 0){
            c1(n,y);
        }else if(x == 1){
            c2(n,y);
        }
        else if(x == 2){
            c3(n,y);
        }
    }
}