Cod sursa(job #3037966)

Utilizator Hacker_1Hacker1 Hacker_1 Data 26 martie 2023 18:34:58
Problema Cautare binara Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
long long int n, x, a, b, st, dr, mid, v[100010];

int main()
{
    fin>>n;
    for(int i=1; i<=n; i++) fin>>v[i];
    sort(v+1, v+n+1);
    fin>>x;
    for(int i=1; i<=x; i++) {
        fin>>a>>b;
        st=1, dr=n;
        if(a==0) {
            while(st<=dr) {
                mid=st+(dr-st)/2;
                if(v[mid]<=b) st=mid+1;
                else dr=mid-1;
            }
            mid=st+(dr-st)/2;
            if(v[mid]>b) mid--;
            if(v[mid]==b) fout<<mid<<'\n';
            else fout<<-1<<'\n';
        }
        else if(a==1) {
            while(st<=dr) {
                mid=st+(dr-st)/2;
                if(v[mid]<=b) st=mid+1;
                else dr=mid-1;
            }
            if(v[mid]>b) mid--;
            fout<<mid<<'\n';
        }
        else {
            while(st<=dr) {
                mid=st+(dr-st)/2;
                if(v[mid]<b) st=mid+1;
                else dr=mid-1;
            }
            if(v[mid]<b) mid++;
            fout<<mid<<'\n';
        }
    }

    return 0;
}