Cod sursa(job #474105)

Utilizator mihai995mihai995 mihai995 Data 2 august 2010 15:46:47
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <fstream>
using namespace std;

int v[1<<17],n;

ifstream in("cautbin.in");
ofstream out("cautbin.out");

int bs(int x)
{
	int i,step=1<<16;
	for (i=0;step;step>>=1)
		if (i+step<=n && v[i+step]<=x)
			i+=step;
	return i;
}

int work(int a,int x)
{
	if (a==1)
		return bs(x);
	if (a==2)
		return bs(x-1)+1;
	a=bs(x);
	if (v[a]==x)
		return a;
	return -1;
}

int main()
{
	int m,a,x;
	in>>n;
	for (int i=1;i<=n;i++)
		in>>v[i];
	in>>m;
	while (m--)
	{
		in>>a>>x;
		out<<work(a,x)<<"\n";
	}
	return 0;
}