Cod sursa(job #414558)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 10 martie 2010 11:18:39
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 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);
		switch(a) {
		case 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");
				break;
			}
		case 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);
				break;
			}
		case 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);
			}
		default:
			printf("In loc de else");
		};
	}
	
	fclose(f);
	fclose(g);
	return 0;
}