Cod sursa(job #898313)

Utilizator mvcl3Marian Iacob mvcl3 Data 28 februarie 2013 09:54:57
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream f("cautbin.in"); ofstream g("cautbin.out");

int n, m, t, x;
vector<int> a;
int main()
{
    f >> n;
    int el;
    for(int i = 1; i <= n; ++i) f >> el, a.push_back(el);
    f>>m;
    vector<int> :: iterator poz;
    while(m--)
    {
        f >> t >> x;
        if(!t)
        {
            poz = upper_bound(a.begin(), a.end(), x);
            if(poz != a.end())
                g<<(*poz) - 1<<'\n';
            else
                g<<-1<<'\n';
        }
        else
        if(t == 1)
        {
            poz = upper_bound(a.begin(), a.end(), x);
            if(poz != a.end())
                g<<(*poz) - 1<<'\n';
            else
            {
                while(poz == a.end())
                    poz = upper_bound(a.begin(), a.end(), --x);
                g<<(*poz) - 1<<'\n';
            }
        }
        else
        {
            poz =lower_bound(a.begin(), a.end(), x);
            if(poz != a.end()) g<<(*poz) - 1<<'\n';
            else
            {
                while(poz == a.end())
                    poz = lower_bound(a.begin(), a.end(), ++x);
                g<<(*poz) - 1<<'\n';
            }
        }
    }
}