Cod sursa(job #714709)

Utilizator Sm3USmeu Rares Sm3U Data 15 martie 2012 23:23:18
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <cstdio>
#include <algorithm>
#define nMax 100005
using namespace std;

int n;
int a[nMax];

int main()
{
    freopen ("cautbin.in", "r", stdin);
    freopen ("cautbin.out", "w", stdout);
    scanf ("%d", &n);
    for (int i = 0; i < n; ++ i){
        scanf ("%d", &a[i]);
    }
    int m;
    scanf ("%d", &m);
    while (m --){
        int caz;
        int x;
        scanf ("%d %d", &caz, &x);
        int afis;
        switch (caz){
        case 0:
            afis = upper_bound (a, a + n, x) - a;
            if (afis > 0 && a[afis - 1] == x){
                printf ("%d\n", afis );
            }else{
                printf ("-1\n");
            }
            break;
        case 2:
            afis = lower_bound (a, a + n, x) - a;
            printf ("%d\n", afis + 1);
            break;
        case 1:
            afis = upper_bound (a, a + n, x) - a ;
            if (a[afis - 1] == x){
                afis --;
            }
            printf ("%d\n", afis + 1);
            break;
        }
    }

    return 0;
}