Cod sursa(job #944554)

Utilizator sebii_cSebastian Claici sebii_c Data 29 aprilie 2013 01:26:28
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <algorithm>
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");

    int N;
    fin >> N;

    vector<int> v(N);
    for (int i = 0; i < N; ++i) 
        fin >> v[i];

    int M;
    fin >> M;
    for (int i = 0; i < M; ++i) {
        int op, x;
        fin >> op >> x;
        if (op == 0) {
            auto it = lower_bound(begin(v), end(v), x + 1);
            if (it == begin(v) || *(it - 1) != x)
                fout << -1 << "\n";
            else
                fout << it - begin(v) << "\n";
        } else if (op == 1) {
            auto it = lower_bound(begin(v), end(v), x + 1);
            fout << it - begin(v) << "\n";
        } else {
            auto it = upper_bound(begin(v), end(v), x - 1);
            fout << it - begin(v) + 1 << "\n";
        }
    }

    return 0;
}