Cod sursa(job #1785620)

Utilizator Mihai_PredaPreda Mihai Dragos Mihai_Preda Data 21 octombrie 2016 18:11:15
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

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

int n, m;
vector<int> v;

int main()
{
    in >> n;
    v.resize(n + 1);
    for(int i = 1; i <= n; ++i)
        in >> v[i];
    in >> m;
    int tip, x;
    for(int i = 1; i <= m; ++i)
    {
        in >> tip >> x;
        if(tip == 0)
        {
            vector<int>::iterator it = upper_bound(v.begin() + 1, v.end(), x);
            int p = it - v.begin() - 1;
            if(v[p] == x)
                out << p << "\n";
            else
                out << "-1" << "\n";
        }
        else if(tip == 1)
        {
            vector<int>::iterator it = upper_bound(v.begin() + 1, v.end(), x);
            int p = it - v.begin() - 1;
            out << p << "\n";
        }
        else if(tip == 2)
        {
            vector<int>::iterator it = lower_bound(v.begin() + 1, v.end(), x);
            int p = it - v.begin();
            out << p << "\n";
        }
    }
    return 0;
}