Cod sursa(job #414553)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 10 martie 2010 11:12:25
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>
FILE*f=fopen("cautbin.in","r");
FILE*g=fopen("cautbin.out","w");
int a,x,ii,mm,u,p,n,i,v[100001],m;
int main () {
	fscanf(f,"%d",&n);
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&v[i]);
	fscanf(f,"%d",&mm);
	for(ii=1;ii<=mm;ii++){
		fscanf(f,"%d%d",&a,&x);
		if(a==0){
			p=1; u=n;
			while(p<=u){
				m=u-(u-p)/2;
				if(x>=v[m])
					p=m+1;
				else
					u=m-1;
			}
			if(x==v[u])
				fprintf(g,"%d\n",u);
			else
				fprintf(g,"-1\n");
		}
		if(a==1){
			p=1; u=n;
			while(p<=u){
				m=u-(u-p)/2;
				if(x>=v[m])
					p=m+1;
				else
					u=m-1;
			}
			fprintf(g,"%d\n",u);
		}
		if(a==2){
			p=1; u=n;
			while(p<=u){
				m=u-(u-p)/2;
				if(x<=v[m]){
					u=m-1;
				}
				else{
					p=m+1;
				}
			}
			fprintf(g,"%d\n",p);
		}
	}
	
	fclose(f);
	fclose(g);
	return 0;
}