Cod sursa(job #829286)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 4 decembrie 2012 23:34:12
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <algorithm>
#include <fstream>

using namespace std;

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

const int N = 100005;

int n, q;
int v[N];

int main() {
    f >> n;
    for (int i = 1; i <= n; ++i)
        f >> v[i];

    f >> q;

    while (q--) {
        int type, x, sol;

        f >> type >> x;
        
        if (type == 0) {
            sol = upper_bound(v + 1, v + n + 1, x) - v - 1;
            if (v[sol] == x && 1 <= sol && sol <= n)
                g << sol << '\n';
            else
                g << "-1\n";
        } else if (type == 1) {
            sol = lower_bound(v + 1, v + n + 1, x + 1) - v - 1;
            g << sol << '\n';
        } else if (type == 2) {
            sol = upper_bound(v + 1, v + n + 1, x - 1) - v;
            g << sol << '\n';
        }
    }

    return 0;
}