Cod sursa(job #754880)

Utilizator Marius96Marius Gavrilescu Marius96 Data 3 iunie 2012 21:39:16
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 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 op,x;
		scanf ("%d%d",&op,&x);

		int *p;
		switch(op){
		case 0:
			p=upper_bound (v,v+n,x)-1;
			if(*p==x)
				printf ("%d",p-v+1);
			else
				printf ("-1");
			break;

		case 1:
			p=upper_bound (v,v+n,x)-1;
			printf ("%d",p-v+1);
			break;

		case 2:
			p=lower_bound (v,v+n,x);
			printf ("%d",p-v+1);
		}
		puts ("");
	}
	return 0;
}