Cod sursa(job #803334)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 27 octombrie 2012 13:38:10
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<stdio.h>

#define Nmax 100001

int N, *V, putere;

int main() {
	
	freopen("cautbin.in","r",stdin);
	freopen("cautbin.out","w",stdout);
	
	int i, tip, poz, val, T;
	
	scanf("%d",&N);
	V = new int[N+1];
	for(i=1; i<=N; i++)
		scanf("%d",&V[i]);
	scanf("%d",&T);
	
	putere = 1;
	while(putere <= N)
		putere<<=1;
	
	while(T--) {
		scanf("%d %d",&tip,&val);
		if(tip < 2) {
			for(i = putere, poz = 0; i; i>>=1)
				if(poz+i<=N && V[poz+i]<=val)
					poz+=i;
			if(tip == 0 && V[poz] !=val) 
				printf("-1\n");
			else
				printf("%d\n",poz);
		}
		else {
			for(i = putere, poz = N; i; i>>=1)
				if(poz-i>=1 && V[poz-i]>=val)
					poz-=i;
			printf("%d\n",poz);
		}
	}
	
	return 0;
}