Cod sursa(job #566980)

Utilizator PavelPavel Ana-Oriana Pavel Data 29 martie 2011 16:05:49
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>

using namespace std;

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

int v[100001],n;

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

int caut1(int x)
{
	int i,pas=1<<16;
	for(i=0;pas!=0;pas/=2)
		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/=2)
		if(i+pas<=n && v[i+pas]<x)
			i+=pas;
	return i+1;
}


int main()
{
	int t,i,x,tip,k;
	in>>n;
	for(i=1;i<=n;i++)
		in>>v[i];
	in>>t;
	for(i=1;i<=t;i++)
	{
		in>>tip>>x;
		if(tip==0)
		{
			k=caut0(x);
			out<<k<<'\n';
		}
		if(tip==1)
		{
			k=caut1(x);
			out<<k<<'\n';
		}
		if(tip==2)
		{
			k=caut2(x);
			out<<k<<'\n';
		}
	}
	return 0;
}