Cod sursa(job #566975)

Utilizator theocmtAxenie Theodor theocmt Data 29 martie 2011 16:03:37
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream.h>

long long v[100001];
int x,nr,t,n,m;

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

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

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

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

int main()
{
	int i,j;
	f>>n;
	for (i=1; i<=n; i++)
		f>>v[i];
	f>>m;
	for (i=1; i<=m; i++)
	{
		f>>t>>x;
		if (t==0)
		{
			nr=caut0(x);
			g<<nr<<"\n";
		}
		if (t==1)
		{
			nr=caut1(x);
			g<<nr<<"\n";
		}
		if (t==2)
		{
			nr=caut2(x);
			g<<nr<<"\n";
		}
	}
	return 0;
}