Cod sursa(job #208871)

Utilizator andyciupCiupan Andrei andyciup Data 19 septembrie 2008 15:11:44
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
#define N 100100
int v[N],n;
int cautbin(int x, int test){
	int m;
    int p=1;
	int q=n;
	while(p!=q){
		m=p+(q-p)/2;
		if(x<=v[m])
			q=m;
		else
			p=m+1;
	}
	if(test==0){
		if(x!=v[p])
			return -1;
		else return p;
	}
	if(test==1){
		if(x<v[p])
			return p-1;
		return p;
		
	}
	if(test==2){
		if(x>v[p])
			return p+1;
		return p;
	}
}


int main(){
	freopen("cautbin.in", "r", stdin);
	freopen("cautbin.out", "w", stdout);
	int m, i, p, test;
	scanf("%d", &n);
	for(i=1; i<=n; ++i){
		scanf("%d", &v[i]);
	}
	scanf("%d", &m);
	for(i=1; i<=m; ++i){
		scanf("%d%d", &test,&p);
		printf("%d\n",cautbin(p,test));
	}
	
	return 0;
}