Cod sursa(job #490425)

Utilizator raduspowertinca radu raduspower Data 6 octombrie 2010 15:56:09
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
using namespace std;
int v[100001],x,m,n,k;

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

int caut0(int x)
{
	int i,pas (1<<16);
	for (i=0;pas!=0; pas>>=1)
		if (i+pas<=n && v[i+pas]<=x)
			i+=pas;
	if (v[i]!=x)
		return -1;
	else return i;
}

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

int caut2(int x)
{
	int i,pas (1<<16);
	for (i=0;pas!=0; pas>>=1)
		if (i+pas<=n && v[i+pas]<x)
			i+=pas;
	
	return i+1;
}
	
int main()
{
	int j,l;
	in>>n;
	for (j=1; j<=n;j++)
		in>>v[j];
	in>>m;
	for (j=0;j<m;j++)
	{
		in>>k>>x;
		if (k==0)
			l=caut0(x);
		if (k==1)
			l=caut1(x);
		if (k==2)
			l=caut2(x);
		out<<l<<"\n";
	}
}