Cod sursa(job #2403961)

Utilizator butnaru_vlad2003Butnaru Vlad butnaru_vlad2003 Data 12 aprilie 2019 09:48:32
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.42 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream in ("ax.in");
ofstream out ("ax.out");
int main()
{
    vector<int> v;
    int n,k;
    in>>n;
    for (int i=1;i<=n;++i)
        in>>k,v.push_back(k);
    vector<int>::iterator a;
    int m;
    in>>m;
    for (int i=1;i<=m;++i)
    {
        in>>k;
        if (k==0)
        {
            int l;
            in>>l;
            if (!binary_search(v.begin(),v.end(),l))
                {
                    out<<-1;
                    continue;
                }
            else
            {
                a=upper_bound(v.begin(),v.end(),l);
                while (v[*a]==l)
                    a++;
                a--;
                out<<*a+1<<'\n';
            }
        }
        if (k==1)
        {
            int l;
            in>>l;
            a=lower_bound(v.begin(),v.end(),l);
            while (v[*a]==l)
                    a++;
            a--;
            out<<*a+1<<'\n';
        }
        if (k==2)
        {
            int l;
            in>>l;
            if (binary_search(v.begin(),v.end(),l))
            {
                a=lower_bound(v.begin(),v.end(),l);
                out<<*a-1<<'\n';
            }
            else
            {
                a=upper_bound(v.begin(),v.end(),l);
                out<<*a<<'\n';
            }
        }
    }
    return 0;
}