Cod sursa(job #1471191)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 august 2015 13:54:44
Problema Cautare binara Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
int n,m,i,v[100001],x,y,s,l;
int main() {
	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(l=1;l<=n;l<<=1);
	while(m--) {
		scanf("%d%d",&x,&y);
       	for(i=0,s=l;s;s>>=1)
       	if(i+s<=n&&v[i+s]<=y)
        	i+=s;
       	if(!x)
            printf("%d\n",v[i]==y?i:-1);
       	else if(x==1)
            if(v[i]==y) {
                for(;v[i]==y;i++);
                printf("%d\n",i-1);
            }
            else
                printf("%d\n",i);
        else {
            for(;v[i]==y;i--);
            printf("%d\n",i+1);
        }
	}
}