Cod sursa(job #209078)

Utilizator silvia_the_bestSilvia Pripoae silvia_the_best Data 20 septembrie 2008 14:21:38
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#define N 100005
int n,tip,x,v[N];
int solve(){
	int p=1,u=n,m;
	while (p!=u){
		m=(p+u)/2;
		if (x<=v[m])
			u=m;
		else
			p=m+1;
	}
	if (tip==0){
		if (x==v[p])
			return p;	
		return -1;
	}
	if (tip==1){
		if (x<v[p])
			--p;
		return p;
	}
	if (x>v[p])
		++p;
	return p;
}
void write(int a){
	printf("%d\n",a);
}
void read(){
	int i,m;
	freopen("cautbin.in","r",stdin);
	freopen("cautbin.out","w",stdout);
	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",&tip,&x);
		write(solve());
	}
}
int main(){
	read();
	return 0;
}