Cod sursa(job #398505)

Utilizator robertzelXXX XXX robertzel Data 18 februarie 2010 21:07:47
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 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();

            if (r<=n && r>=1 && v[r-1]==k) {
                fprintf(stdout, "%d\n", r);
            } else {
                fprintf(stdout, "-1\n");
            }
        } 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;
}