Cod sursa(job #442307)

Utilizator myshuSpatariu Mihai-Constantin myshu Data 14 aprilie 2010 08:46:40
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 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(v[piv]!=x&&b-a>1)
					  {if(v[piv]<=x)
					        a=piv;
					   else b=piv;
						piv=(a+b)/2;}
						if(y==0&&v[piv]==x)while(v[piv+1]==x&&piv+1<=n)piv++;
						else if(y==1&&v[piv]<=x)while(v[piv+1]<=x&&piv+1<=n)piv++;
							else if(y==2&&v[piv]>=x)while(v[piv-1]>=x&&piv-1>=1)piv--;
								 else if(y==0){if(v[b]!=x)piv=-1;else piv=b;}
									  else if(y==2&&v[piv]<x)while(v[piv]<x)piv++;
						fcout<<piv<<'\n';
					 }
return 0;
}