Cod sursa(job #594889)

Utilizator alexpascadiAlexandru Pascadi alexpascadi Data 10 iunie 2011 13:18:22
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");

int v[100001],N;

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

int main()
{
	int i,M,caut,x;
	f>>N;
	for(i=1;i<=N;i++) f>>v[i];
	f>>M;
	for(i=1;i<=M;i++)
	{
		f>>caut>>x;
		if(caut==0) g<<caut0(x)<<"\n";
		if(caut==1) g<<caut1(x)<<"\n";
		if(caut==2) g<<caut2(x)<<"\n";
	}
}