Cod sursa(job #316798)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 21 mai 2009 09:30:02
Problema Cautare binara Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
#define N 100002
int v[N];
void citire()
{
	freopen("cautbin.in","r",stdin);
	freopen("cautbin.out","w",stdout);
	int n,m;
	scanf("%d",&n);
	for (int i=1; i<=n; ++i) scanf("%d",&v[i]);
	scanf("%d",&m);
	int logn;
	for (logn=1; logn<=n; logn<<=1);
	while (m)
	{
		int t,x;
		scanf("%d%d",&t,&x);
		if (t<2)
		{
			int lg,i;
			for (lg=logn, i=0; lg;lg>>=1)
				if (i+lg<=n&&v[i+lg]<=x)
					i+=lg;
			if (!t&&v[i]!=x)
				printf("-1\n");
			else printf("%d\n",i);
		}
		else
		{
			int lg,i;
			for (lg=logn,i=n;lg;lg>>=1)
				if (i-lg&&v[i-lg]>=x)
					i-=lg;
			printf("%d\n",i);
		}
		--m;
	}
}
int main()
{
	citire();
	return 0;
}