Cod sursa(job #1164352)

Utilizator cbanu96Banu Cristian cbanu96 Data 1 aprilie 2014 23:56:33
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define FILEIN "cautbin.in"
#define FILEOUT "cautbin.out"
#define NMAX 100005

int V[NMAX+1];
int N, M;

int main() {
    freopen(FILEIN, "r", stdin);
    freopen(FILEOUT, "w", stdout);

    scanf("%d", &N);

    for ( int i = 1; i <= N; i++ ) {
        scanf("%d", &V[i]);
    }

    for (scanf("%d", &M); M; M-- ) {

        int T, x;

        scanf("%d", &T);
        scanf("%d", &x);

        if (T == 0 || T == 1) {
            int rez = upper_bound(V+1, V+N+1, x) - V;
            if (T == 0) {
                if (V[rez - 1] != x) {
                    printf("-1\n");
                } else {
                    printf("%d\n", rez - 1);
                }
            } else {
                if (V[rez] <= x && rez <= N) {
                    printf("%d\n", rez);
                } else {
                    printf("%d\n", rez - 1);
                }
            }
        }

        if (T == 2) {
            int rez = lower_bound(V+1, V+N+1, x) - V;
            printf("%d\n", rez );
        }
    }
    return 0;
}