Cod sursa(job #1836778)

Utilizator HannaLieb Hanna Hanna Data 28 decembrie 2016 17:40:03
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream cin("cautbin.in");
ofstream cout("cautbin.out");

int n,m,i,a,b;
int main()
{
    cin>>n;

    vector<int>x(n);
    for(auto &e : x) cin>>e;

    cin>>m;

    for(i=1;i<=m;i++)
    {
        cin>>a>>b;

        if(a==0)
        {
            auto upb=upper_bound(x.begin(), x.end(), b);
            if(upb-x.begin() != 0 && x[upb-x.begin()-1]==b) cout<<upb-x.begin()<<"\n";
            else cout<<"-1\n";
        }

        if(a==1)
        {
            auto upb2=upper_bound(x.begin(), x.end(), b);
            cout<<upb2-x.begin()<<"\n";
        }
        if(a==2)
        {
            auto upb3=upper_bound(x.begin(), x.end(), b-1);
            cout<<upb3-x.begin()+1<<"\n";

        }
    }

    return 0;
}