Cod sursa(job #560078)

Utilizator cnt_tstcont teste cnt_tst Data 18 martie 2011 12:20:44
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<stdio.h>
FILE*f=fopen("cautbin.in","r");
FILE*g=fopen("cautbin.out", "w");
int n,m,a,x,p,u,i,q;
int v[100001];
int main (){
	fscanf(f, "%d", &n);
	for(i=1;i<=n;i++){
		fscanf(f, "%d", &v[i]);
	}
	fscanf(f,"%d", &q);
	for(i=1;i<=q;i++){
		fscanf(f, "%d %d", &a, &x);
		p=1;
		u=n;
		if (a==0){
			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){
			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){
			while (p<=u){
				m=u-(u-p)/2;
				if (x>v[m])
					p=m+1;
						else{
							u=m-1;
						}
						
			}
			fprintf(g,"%d\n", u+1);
		}
	}
			
	
	fclose(f);
	fclose(g);
	return 0;
}