Cod sursa(job #442292)

Utilizator myshuSpatariu Mihai-Constantin myshu Data 14 aprilie 2010 08:10:46
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<fstream.h>
int main ()
{
	ifstream fcin("cautbin.in");
	ofstream fcout("cautbin.out");
	int n,i,m,v[100001],a,b,y,x,piv;
	fcin>>n;
	for(i=1;i<=n;i++)
		fcin>>v[i];
	fcin>>m;
	for(i=1;i<=m;i++)
		{fcin>>y>>x;
		piv=n/2+n%2;a=1;b=n;
				  while(a<b)
					  {if(v[piv]<=x)
					        a=piv;
					   else b=piv;
						if(v[(a+b)/2+(a+b)%2]<=x)piv=(a+b)/2+(a+b)%2;
						else break;}
					  if(y==1)fcout<<piv<<'\n';
					  else if(y==2){while(v[piv]==x)piv--;
									fcout<<piv+1<<'\n';}
							else if(v[piv]!=x)fcout<<-1<<'\n';
								 else fcout<<piv<<'\n';
					 }
return 0;
}