Cod sursa(job #700025)

Utilizator Marius96Marius Gavrilescu Marius96 Data 29 februarie 2012 22:55:22
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int v[100005];

int main()
{
	freopen ("cautbin.in","r",stdin);
	freopen ("cautbin.out","w",stdout);
	int n,m;
	scanf ("%d",&n);
	for(int i=0;i<n;i++)
		scanf ("%d",v+i);
	scanf ("%d",&m);
	while(m--){
		int x,y;
		scanf ("%d%d",&x,&y);
		int *z;
		switch(x){
		case 0:
			z=upper_bound (v,v+n,y);
			z--;
			if(*z==y)
				printf ("%ld\n",z-v+1);
			else
				puts ("-1");
			break;
		case 2:
			z=lower_bound (v,v+n,y);
			printf ("%ld\n",z-v+1);
			break;
		case 1:
			z=upper_bound (v,v+n,y);
			if(*(z-1)==y)
				z--;
			printf ("%ld\n",z-v+1);
		}
	}
	return 0;
}