Cod sursa(job #2030521)

Utilizator Gigel-FroneGigel Fronel Gigel-Frone Data 1 octombrie 2017 18:51:07
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <cstdio>
#include <algorithm>
#define NMax 100001

using namespace std;

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

    int m, n, v[NMax];
    scanf("%d", &n); for(int i=1; i<=n; i++) scanf("%d", &v[i]); scanf("%d", &m);
    //sort(v+1, v+n+1);
    for(int i=1; i<=m; i++) {
        int tip, val;
        scanf("%d%d", &tip, &val);
        if(tip == 0) {
            int pos = upper_bound(v+1, v+n+1, val) - v - 1;
            if(pos >= 1 && pos <= n && v[pos] == val) {
                printf("%d\n", pos);
            } else {
                printf("-1\n");
            }
        } else if(tip == 1) {
            int pos = lower_bound(v+1, v+n+1, val+1) - v - 1;
            printf("%d\n", pos);
        } else if(tip == 2) {
            int pos = upper_bound(v+1, v+n+1, val-1) - v;
            printf("%d\n", pos);
        }
    }
}