Cod sursa(job #414538)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 10 martie 2010 10:55:40
Problema Cautare binara Scor 0
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,m,u,p,n,i,v[100001];
int main () {
	fscanf(f,"%d",&n);
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&v[i]);
	fscanf(f,"%d",&m);
	for(ii=1;ii<=m;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");
		}
		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;
}