Cod sursa(job #2133029)

Utilizator problem_destroyer69Daniel Hangan problem_destroyer69 Data 16 februarie 2018 14:27:49
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define ll long long
#define pb push_back
#define INF 1000000005
#define LINF 1000000000000000005
#define MAXN 100005
#define pi pair<int,int>
#define pl pair<ll,ll>
#define int ll

vector <int> g;
int n,m;
signed main() {
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for (int i=1;i<=n;i++){
    int x;
    fin>>x;
    g.pb(x);
}
fin>>m;
for (int i=1;i<=m;i++){
    int q,elem;
    fin>>q>>elem;
    auto it=upper_bound(g.begin(),g.end(),elem);
    auto itp=lower_bound(g.begin(),g.end(),elem);
    if (q==0){
        it--;
        if (g[it-g.begin()]==elem) fout<<it-g.begin()+1;
        else fout<<-1;
        fout<<"\n";
    }
    if (q==1){
        it--;
        fout<<it-g.begin()+1;
        fout<<"\n";
    }
    if (q==2){
        fout<<itp-g.begin()+1;
        fout<<"\n";
    }
}
}