Cod sursa(job #795168)

Utilizator Sm3USmeu Rares Sm3U Data 7 octombrie 2012 18:11:45
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>
#include <algorithm>


using namespace std;

int n;
int a[100010];

void citire(){
    scanf ("%d", &n);
    for (int i = 0; i < n; ++ i){
        scanf ("%d", &a[i]);
    }
    int m;
    for (scanf ("%d", &m); m --;){
        int caz;
        int x;
        scanf ("%d %d", &caz, &x);
        if (caz == 0){
            int poz = upper_bound(a, a + n, x) - a;
            if (!(poz >= 0 && a[poz - 1] == x)){
                poz = -1;
            }
            printf ("%d\n", poz);
        }else if (caz == 1){
            printf ("%d\n", upper_bound (a, a + n, x) - a);
        }else{
            printf ("%d\n", lower_bound (a, a + n, x) - a + 1);
        }
    }
}

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

    citire();

    return 0;
}