Cod sursa(job #2317291)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 13 ianuarie 2019 03:09:44
Problema Cautare binara Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std ;
ifstream f ("cautbin.in") ;
ofstream g ("cautbin.out") ;
unsigned int N , M , i , j , query ;
unsigned int x;
vector <unsigned int> v ;
vector <unsigned int>::iterator poz , poz2 ;

void solve0()
{
        poz = lower_bound(v.begin() , v.end() , x);
        if (v.at(poz - v.begin()) != x) g << -1  << '\n';
        else
        {
            poz2 = upper_bound(v.begin() , v.end() , x) ;
            g << poz2 - v.begin() << '\n';
        }
}
void solve1()
{
        poz = upper_bound(v.begin() , v.end() , x);
        g << poz - v.begin() << '\n';
}

void solve2()
{
             poz = lower_bound(v.begin() , v.end() , x) ;
             g << poz - v.begin() + 1 << '\n';
}

int main()
{
    f >> N ;
    for (i = 0 ; i < N ; ++i)
    {
    f >> x;
    v.push_back(x);
    }
    f >> M ;
    for (i = 1 ; i <= M ; ++i)
    {
        f >> query >> x ;


        if (query == 0) solve0() ;
        if (query == 1) solve1() ;
        if (query == 2) solve2() ;
    }
    f.close();
    g.close();
}