Cod sursa(job #717632)

Utilizator KheyasVettor Stefan-Andrei Kheyas Data 20 martie 2012 08:46:31
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>

int MI,ST,DR,cod,val,n,m,i,x[100010];

int main()
{
	freopen("cautbin.in","r",stdin);
	freopen("cautbin.out","w",stdout);
	
	scanf("%d",&n);
	for(int i=1 ;i<=n;i++)
		scanf("%d",&x[i]);
	
	scanf("%d",&m);
	for(;m;m--)
	{
		scanf("%d%d",&cod,&val);
		if(cod == 0)
		{
			if(x[1]>val||x[n]<val)printf("-1\n");
			else
			{
			for(ST=1,DR=n+1;DR-ST-1;)
			{
				MI=(ST+DR)/2;
				if(x[MI]<=val)ST=MI;
				else
					DR=MI;
			}
			if(x[ST]==val)
				printf("%d\n",ST);
			else
				printf("-1\n");
			}
			continue;
		}
		if(cod == 1)
		{
			for(ST=1,DR=n+1;DR-ST-1;)
			{
				MI=(ST+DR)/2;
				if(x[MI]<=val)ST=MI;
				else
					DR=MI;
			}
				printf("%d\n",ST);
			continue;
		}
		for(ST=1,DR=n+1;DR-ST-1;)
		{
			MI=(ST+DR)/2;
			if(x[MI]<val)ST=MI;
			else
				DR=MI;
		}
		printf("%d\n",DR);
	}
	
	return 0;
}