Cod sursa(job #412384)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 5 martie 2010 16:01:25
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>

#define file_in "cautbin.in"
#define file_out "cautbin.out"

int n,m,tip,val,v[100000];

int caut()
{
	int i,pas;
	
	if (tip==2)
		val--;
	
	for (pas=1;pas<=n;pas<<=1);
	     for (i=0;pas;pas>>=1)
			  if (i+pas<=n && v[i+pas]<=val)
				  i+=pas;
	
	if (tip==0 && v[i]!=val)
		return -1;
	if (tip==2)
		return i+1;
	return i;
}	

int main()
{
	int i;
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d", &n);
	for (i=1;i<=n;++i)
		 scanf("%d", &v[i]);
	
	scanf("%d", &m);
	while(m--)
	{
		scanf("%d %d", &tip, &val);
		printf("%d\n",caut());
	}
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}