Cod sursa(job #2532207)

Utilizator CriviCriveanu Bogdan Crivi Data 27 ianuarie 2020 16:07:30
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in;
ofstream out;

vector<int> v;
vector<int>::iterator it;

int n,x,op;

int main()
{
    in.open("cautbin.in");
    out.open("cautbin.out");
    
    in>>n;
    for(int i=1;i<=n;i++)
    {
        in>>x;
        v.push_back(x);
    }
    in>>n;
    while (n)
    {
        in>>op>>x;
        if(op==0)
        {
            int poz=0;
            if(binary_search(v.begin(), v.end(), x)==1)
            {it=upper_bound(v.begin(), v.end(), x);
            poz=distance(v.begin(), it);
            if(poz==v.size())
            {
                if(x==v[poz-1])
                    out<<poz;
                else
                    out<<"-1";
            }
            else
                out<<poz;
            }
            else
                out<<"-1";
            
        }
        if(op==1)
        {
            int poz=0;
            it=upper_bound(v.begin(), v.end(), x);
            poz=distance(v.begin(), it);
            out<<poz;
        }
        if(op==2)
        {
            int poz=0;
            it=lower_bound(v.begin(), v.end(), x);
            poz=distance(v.begin(), it);
            out<<poz+1;
        }
        out<<'\n';
        n--;
    }
    return 0;
}