Cod sursa(job #680816)

Utilizator repp4raduRadu-Andrei Szasz repp4radu Data 15 februarie 2012 22:40:52
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <cstdio>
#include <algorithm>

#define MAX 100050

using namespace std;
int v[MAX];
int main()
{
    freopen("cautbin.in", "r", stdin);
    freopen("cautbin.out", "w", stdout);
    int n, m, i,operatie, src, point;
    scanf("%d\n", &n);
    for(i = 1; i <= n; i++)
    {
        scanf("%d", &v[i]);
    }
    scanf("%d\n", &m);
    sort(v + 1, v + n + 1);
    for(i = 0 ; i < m; i++)
    {
        scanf("%d %d", &operatie, &src);
        if(operatie == 0)
        {
            point = upper_bound(v + 1, v + n + 1, src) - v - 1;
            if(v[point] == src && point >= 1 && point <= n)
            {
                printf("%d\n", point);
            }
            else
                printf("-1\n");
        }
        else if(operatie == 1)
        {
            point = lower_bound(v + 1, v + n + 1, src + 1) - v - 1;
            printf("%d\n", point);
        }
        else
        {
            point = upper_bound(v + 1, v + n + 1, src - 1) - v;
            printf("%d\n", point);
        }
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}