Cod sursa(job #248471)

Utilizator catalin93Catalin Ionescu catalin93 Data 25 ianuarie 2009 20:44:13
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<stdio.h>

int n,i,x,in,t;
int v[1000];
int caut(int x)
{
	int st = 0, dr = n - 1, m;
		while(st!=dr)
		{
			m = (st+dr)/2;
			if(x <= v[m])
				dr = m;
			else st = m+1;
		}
	
		if( x == v[st])
			return st;
		
	return -1;	
}
int main()

{
	freopen("date.in","r",stdin);
	freopen("date.out","w",stdout);
	
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d",&v[i]);
	scanf("%d",&t);
	
	for(i=1;i<=t;i++)
	{
		scanf("%d",&in);
		scanf("%d",&x);
		if(in == 0)
			printf("%d\n",caut(x));
		if(in == 1)
			{
				while(caut(x) == -1)
				x--;
				printf("%d\n",caut(x));
			}
		if(in == 2)
			{
				while(caut(x) == -1)
				x++;
				printf("%d\n",caut(x));
			}
			
		
	}
	return 0;
	
}