Cod sursa(job #590805)

Utilizator balakraz94abcd efgh balakraz94 Data 20 mai 2011 10:04:28
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<cstdio>
#define infile "cautbin.in"
#define outfile "cautbin.out"
#define n_max 100005
using namespace std;

void citeste();
void afiseaza();

int a[n_max];
int n,m,logn;


int main()
{
	freopen(infile,"r",stdin);
	freopen(outfile,"w",stdout);
	
	scanf("%d",&n);
	
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	
	for(logn=1; logn <= n; logn <<=1);
	
	scanf("%d",&m);
	
	int i,lg,x,q;
	
	for(;m;m--)
	{
		scanf("%d %d",&q,&x);
		
		if(q<2)
		{
		for(i=0,lg=logn; lg; lg>>=1)
			if(i+lg<=n && a[i+lg]<=x)
				i+=lg;
			
		if(!q && a[i]!=x)
			printf("-1\n");
		else
			printf("%d\n",i);
		
		continue;
		}
		
		for(i=n,lg=logn; lg; lg>>=1)
			if(i-lg>0 && a[i-lg]>=x)
				i-=lg;
		
		printf("%d\n",i);
	}
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
}