Cod sursa(job #3279083)

Utilizator 9onelostSendrescu Tudor-Gabriel 9onelost Data 21 februarie 2025 20:33:17
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.43 kb
#include <bits/stdc++.h>
#define DIM 100001
using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int v[DIM];

int n, m, query, x;

void solve1(){

    int st=1, dr=n, mij, ret=-1;

    while(st<=dr){

        mij=(st+dr)/2;

        if(v[mij] == x){

            ret=mij;

            st=mij+1;

        }

        else if(v[mij] < x){

            st=mij+1;

        }

        else{

            dr=mij-1;

        }

    }

    fout << ret << endl;

}

void solve2(){

    int st=1,dr=n,mij,ret=1;

    while(st<=dr){

        mij = (st+dr)/2;

        if(v[mij]<= x){

            ret=mij;

            st=mij+1;

        }

        else if(v[mij] > x){

            dr=mij-1;

        }

    }

    fout << ret << endl;

}

void solve3(){

    int st=1,dr=n,mij,ret=1;

    while(st<=dr){

        mij = (st+dr)/2;

        if(v[mij] >= x){

            ret=mij;

            dr=mij-1;

        }

        else if(v[mij] < x){

            st=mij+1;

        }

    }

    fout << ret << endl;

}

int main() {

    fin >> n;

    for(int i=1;i<=n;i++){

        fin >> v[i];

    }

    fin >> m;

    for(int i=1;i<=m;i++){

        fin >> query >> x;

        if(query == 0)

            solve1();

        else if(query == 1)

            solve2();

        else solve3();

    }

    return 0;
}