Cod sursa(job #398499)

Utilizator robertzelXXX XXX robertzel Data 18 februarie 2010 20:49:09
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int n,m,x,i,k,r;
vector<int> v;

int main()
{
    freopen("cautbin.in", "r", stdin);
    freopen("cautbin.out", "w", stdout);

    fscanf(stdin, "%d", &n);

    for (i=0; i<n; i++) {
        fscanf(stdin, "%d", &x);
        v.push_back(x);
    }

    fscanf(stdin, "%d", &m);

    for (i=0; i<m; i++) {
        fscanf(stdin, "%d %d", &x, &k);

        if (x==0) {
            r = upper_bound(v.begin(), v.end(), k)- v.begin();
            fprintf(stdout, "%d\n", (r == v.size()) ? -1 : r);
        } else if (x==1) {
            r = lower_bound(v.begin(), v.end(), k+1)- v.begin();
            fprintf(stdout, "%d\n", r);
        } else {
            r = upper_bound(v.begin(), v.end(), k-1)- v.begin() +1;
            fprintf(stdout, "%d\n", r);
        }
    }

    fclose(stdin);
    fclose(stdout);

    return 0;
}