Cod sursa(job #3221712)

Utilizator stefazstefan dardala stefaz Data 7 aprilie 2024 20:38:20
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <bits/stdc++.h>
using namespace std;
int v[100005];
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int frp(int x, int n){
    int l = 1;
    int r = n;
    while(l < r){
        int mid = (l + r)/2;
        if(v[mid + 1] <= x){
            l = mid + 1;
        }else{
            r = mid;
        }
    }
    return l;
}
int flp(int x, int n){
    int l = 1;
    int r = n;
    while(l < r){
        int mid = (l + r)/2;
        if(v[mid] >= x){
            r = mid;
        }else{
            l = mid+1;
        }
    }
    return l;
}
int main()
{
    int n,m;
    fin >> n;
    for (int i = 1; i <= n; ++i){
        fin >> v[i];
    }
    fin >> m;
    for(int i = 1 ;i <= m ;++i){
        int type,x;
        fin >> type >> x;
        if(type == 0){
            int poz = frp(x,n);
            if(v[poz] != x){
                fout<< -1 <<"\n";
            }else {
                fout<< poz <<"\n";
            }
        }else if(type == 1){
            int poz = frp(x,n);
            fout << poz << "\n";
        }else{
            int poz = flp(x,n);
            fout << poz <<"\n";
        }
    }
    return 0;
}