Cod sursa(job #3139204)

Utilizator addanciuAdriana Danciu addanciu Data 26 iunie 2023 14:16:06
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.8 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int NMAX=100000;
int v[NMAX+1];
int main()
{
    int n,m,c,x;
    fin>>n;
    for(int i=1;i<=n;i++){
        fin>>v[i];
    }
    fin>>m;
    for(int i=1;i<=m;i++){
        fin>>c>>x;
        if(c==0){
            int st = 1, dr = n, mid;
            while (st <= dr) {
                mid = (st + dr) / 2;
                if (v[mid] == x)
                    break;
                    else
                        if (v[mid] < x)
                            st = mid+1;
                            else
                                dr = mid-1;
            }
            if (st <= dr)
                fout<<mid+1<<'\n';
                else
                    fout<<-1<<'\n';
        }
        if(c==1){
            int st = 1, dr = n, mid;
            while (st <= dr) {
                mid = (st + dr) / 2;
                if (v[mid] == x)
                    break;
                    else
                        if (v[mid] <= x)
                            st = mid+1;
                            else
                                dr = mid-1;
            }
            if (st <= dr)
                fout<<mid+1<<'\n';
                else
                    fout<<-1<<'\n';
        } 
        if(c==2){
            int st = 1, dr = n, mid;
            while (st <= dr) {
                mid = (st + dr) / 2;
                if (v[mid] == x)
                    break;
                    else
                        if (v[mid] >= x)
                            st = mid+1;
                            else
                                dr = mid-1;
            }
            if (st <= dr)
                fout<<mid-1<<'\n';
                else
                    fout<<-1<<'\n';
        }
    }
    return 0;
}