Cod sursa(job #496309)

Utilizator Gecko10Malcica Teodor Gecko10 Data 28 octombrie 2010 14:54:56
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include<stdio.h>
long v[100002];
int main()
{
 freopen("cautbin.in","r",stdin);
 freopen("cautbin.out","w",stdout);
 long n,i,st,dr,med,x,poz,last,m;
 int type;
 scanf("%ld",&n);
 for(i=1;i<=n;i++)
	  scanf("%ld",&v[i]);
 scanf("%ld",&m);
 for(i=1;i<=m;i++)
	  { scanf("%d%ld",&type,&x);
		 if(type==0)
			 { poz=-1;
				st=1;
				dr=n;
				last=-1;
				while(st<=dr)
						{ med=(st+dr)/2;
						  if(v[med]<=x)
							  { st=med+1;
								 last=med;
							  }
						  else
							  dr=med-1;
						}
				if(v[last]==x)
					printf("%ld\n",last);
				else
					printf("-1\n");
			 }
		 if(type==1)
			 { poz=-1;
				st=1;
				dr=n;
				last=-1;
				while(st<=dr)
						{ med=(st+dr)/2;
							  if(v[med]<=x)
							  {   last=med;
								  st=med+1;
							  }  
							  else
								  dr=med-1;
						}
				
				printf("%ld\n",last);
			 }
		 if(type==2)
		    {  poz=-1;
				st=1;
				dr=n;
				last=-1;
				while(st<=dr)
						{ med=(st+dr)/2;
						  if(v[med]>=x)
							  { dr=med-1;
								 last=med;
							  }
						  else
							  st=med+1;
						}
				printf("%ld\n",last);		
			}			
	  }

 return 0;
}