Cod sursa(job #194444)

Utilizator blasterzMircea Dima blasterz Data 10 iunie 2008 18:23:07
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>

int a[100001];
int n, m;

int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d\n", &n);

    int i,cnt;
    for(i=1;i<=n;++i) scanf("%d ", a+i);
    scanf("%d\n", &m);

    int t, x;
    while(m--)
    {
	scanf("%d %d\n", &t, &x);

	if(t==0)
	{
	    for(i=1, cnt=(1<<18); cnt; cnt>>=1)
		if(i+cnt<=n)
		    if(a[i+cnt]<=x)i+=cnt;

	    if(a[i]==x) printf("%d\n", i);
	    else printf("-1\n");
	}

	if(t==1)
	{
	    for(i=1, cnt=(1<<18); cnt; cnt>>=1)
		if(i+cnt<=n)
		    if(a[i+cnt]<=x)i+=cnt;
	    printf("%d\n", i);
	}

	if(t==2)
	{
	    for(i=n, cnt=(1<<18); cnt; cnt>>=1)
		if(i-cnt>=1)
		    if(a[i-cnt]>=x)i-=cnt;
	    printf("%d\n", i);
	}



	


    }

    return 0;
}