Cod sursa(job #205790)

Utilizator gabipurcaruGabi Purcaru gabipurcaru Data 2 septembrie 2008 22:54:21
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream.h>
unsigned long int n,m,v[10000],tip,x,i;
ifstream in("date.in");
ofstream out("date.out");
int tip3(int x)
{
int st=1, dr = n, mij;
while(st<dr)
	{
	mij=(st+dr)/2;
	if(v[mij]<x)
		st=mij+1;
	else
		dr=mij;
	}
return st;
}
int tip2(int x)
{
int st=1, dr=n, mij;
while(st < dr)
	{
	mij=(st+dr+1)/2;
	if(v[mij]>x)
		dr=mij-1;
	else
	st=mij;
	}
return st;
}
int tip1(int x)
{
int st=1,dr=n;
while(st<dr)
	{
	int mij=(st+dr+1)/2;
	if(v[mij]>x)
		dr=mij-1;
	else
		st=mij;
	}
if(v[st]==x)
	return st;
return -1;
}


int main()
{

in>>n;
for(i=1; i<=n; i++)
	in>>v[i];
in>>m;
for(i=1;i<=m;i++)
	{
	in>>tip>>x;
	if(tip==0)
		out<<tip1(x);
	else if(tip==1)
		out<<tip2(x);
	else
		out<<tip3(x);
	}
return 0;
}