Cod sursa(job #471777)

Utilizator PavelPavel Ana-Oriana Pavel Data 20 iulie 2010 19:25:46
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>

using namespace std;

ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001];
int 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 -i;
	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 x,bx,m,i;
	in>>n;
	for(i=1;i<=n;i++)
		in>>v[i];
	in>>m;
	for(i=1;i<=m;i++)
	{
		in>>bx>>x;
		if(bx==0)
			out<<caut0(x)<<'\n';
		if(bx==1)
			out<<caut1(x)<<'\n';
		if(bx==2)
			out<<caut2(x)<<'\n';
	}
	return 0;
}