Cod sursa(job #1963084)

Utilizator gabor.vlad13lil pump gabor.vlad13 Data 12 aprilie 2017 11:49:00
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define NMAX 100005

using namespace std;

int n, m;
int vec[NMAX];

void read()
{
    int nrIntrebare, elem;
    scanf("%d\n", &n);
    for (int i=0; i<n; i++)
        scanf("%d ", &vec[i]);
    scanf("%d\n", &m);
    for (int i=1; i<=m; i++)
    {
        scanf("%d %d\n", &nrIntrebare, &elem);
        if (nrIntrebare == 0)
        {
            int poz = (upper_bound(vec, vec+n, elem) - vec -1);
            if (vec[poz] != elem)
                printf("-1\n");
            else
                printf("%d\n", poz + 1);
        }

        else if (nrIntrebare == 1)
        {

            int poz = lower_bound(vec, vec+n, elem+1) - vec;
            printf("%d\n", poz);
        }

        else if (nrIntrebare == 2)
        {
            int poz = upper_bound(vec, vec+n, elem-1) - vec;
            printf("%d\n", poz + 1);
        }

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