Cod sursa(job #540844)

Utilizator daniel.florinPitis Daniel-Florin daniel.florin Data 24 februarie 2011 15:20:05
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int V[100100];

int main () 
{
    int N,M,x,y,i,t;
	freopen("cautbin.in", "r", stdin);
    freopen("cautbin.out", "w", stdout);
	scanf("%d", &N);

    for(i=1;i<=N;++i)
    {  scanf("%d",&V[i]); }
	scanf("%d", &M);
    
    for(i=1;i<=M;++i) 
	{
        scanf("%d %d",&t,&y);
	if(t==0) 
		{
            x = upper_bound(V+1,V+N+1,y)-V-1;
            if(x <= N && x >= 1 && V[x] == y)
                printf("%d\n", x);
            else
                printf("-1\n");
        } else if(t==1) 
		{
            x = lower_bound(V+1,V+N+1,y+1)-V-1;
            printf("%d\n", x);
        } else {
            x = upper_bound(V+1,V+N+1,y-1)-V;
            printf("%d\n", x);
        }
    }
}