Cod sursa(job #1240571)

Utilizator drobertDumitru Robert drobert Data 11 octombrie 2014 17:36:13
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");

int n,m,v[100001],k,x,p2;

int main()
{
	int i,j,p;
	cin>>n;
	for (i=1;i<=n;i++)
		cin>>v[i];
	cin>>m;
	for (p2=1;p2<=n;p2<<=1);
	for (i=1;i<=m;i++)
	{
		cin>>k>>x;
		if (k<2)
		{
			for (j=0,p=p2;p;p>>=1)
				if (j+p<=n &&v[j+p]<=x)
						j+=p;
			if (!k && v[j]!=x)
				cout<<"-1\n";
			else
				cout<<j<<'\n';
		}
		else
		{
			for (j=n,p=p2;p;p>>=1)
				if (j-p>0)
					if (v[j-p]>=x)
						j-=p;
			cout<<j<<'\n';
		}
	}
	return 0;
}