Cod sursa(job #716634)

Utilizator iuli1505Parasca Iuliana iuli1505 Data 19 martie 2012 08:10:31
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<cstdio>
#include<algorithm>
#include<vector>
#define nmax 100001
using namespace std;
int n,m,key,x,v[nmax];
int main()
{
	int i, poz;
	freopen("cautbin.in","r",stdin);
	freopen("cautbin.out","w",stdout);
	scanf("%d", &n);
	for(i=0;i<n;i++)
		scanf("%d", &v[i]);
	scanf("%d", &m);
	for(i=1;i<=m;i++)
	{
		scanf("%d%d", &key, &x);
		if(key==0)
		{
			poz=upper_bound(v,v+n,x)-v-1;
			if(poz>=1&&poz<=n&&v[poz]==x)
				printf("%d\n",poz+1);
			else
				printf("-1\n");
			continue;
		}
		if(key==1)
		{
			poz=lower_bound(v,v+n,x+1)-v-1;
			printf("%d\n", poz+1);
			continue;
		}
		if(key==2)
		{
			poz=upper_bound(v,v+n,x-1)-v;
			printf("%d\n",poz+1);
		}
	}
	return 0;
}