Cod sursa(job #239079)

Utilizator drag0s93Mandu Dragos drag0s93 Data 4 ianuarie 2009 00:16:35
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<stdio.h>
int n,m,v[100000],x,intr,step;
void vector()
{
	for(int i=0;i<n;++i)
		scanf("%d",&v[i]);
}
void intrebari()
{
	int ok=0,i=0;
	scanf("%d",&m);
	for(int j=0;j<m;++j)
	{
		scanf("%d%d",&intr,&x);
		if(intr==0)
		{
			for (step = 1; step < n; step <<= 1);   
			for (i = 0; step; step >>= 1)   
				if (i + step < n && v[i + step] <= x)   
				   i += step;   
			printf("%d\n",i+1);
		}
		if(intr==1)
		{
			for (step = 1; step < n; step <<= 1);   
			for (i = 0; step; step >>= 1)   
				if (i + step < n && v[i + step] <= x)   
				   i += step;   
			printf("%d\n",i);
		}
		else if(intr==2)
		{
			for (step = 1; step < n; step <<= 1);   
			for (i = 0; step; step >>= 1)   
				if (i + step < n && v[i + step] <= x)   
				   i += step;   
			printf("%d\n",i+2);
		}
	}
}
int main()
{
	freopen("cautbin.in","r",stdin);
	freopen("cautbin.out","w",stdout);
	scanf("%d",&n);
	vector();
	intrebari();
	return 0;
}