Cod sursa(job #743786)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 5 mai 2012 21:17:49
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<cstdio>
int N, A[10000];
int binary_search1(int val)
{
    int i, step;
    for (step = 1; step < N; step <<= 1);
	for (i = 0; step; step >>= 1)
		if (i + step <= N && A[i + step] <= val)
			i += step;
    return i;
}
int binary_search2(int val)
{
    int i, step;
    for (step = 1; step < N; step <<= 1);
	for (i = 0; step; step >>= 1)
		if (i + step <= N && A[i + step] < val)
			i += step;
    return i;
}
int main()
{
	freopen("cautbin.in","r",stdin);freopen("cautbin.out","w",stdout);
	int i,t,v,a;
	scanf("%d",&N);
	for(i=1;i<=N;i++)
		scanf("%d",&A[i]);
	for(scanf("%d",&t);t;--t)
	{
		scanf("%d%d",&v,&a);
		if(v==2)
			printf("%d",binary_search2(a));
		else
			printf("%d",binary_search1(a)+1);
		printf("\n");
	}
}