Cod sursa(job #206099)

Utilizator RegeleUmbrelorPopescu Mihai RegeleUmbrelor Data 4 septembrie 2008 18:09:45
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
using namespace std;
#include<fstream>

const int N=100100;

int caut(int x,int n,int v[N])
{
	int p=1,u=n,m;
	while(p!=u)
	{
		m=(p+u)/2;//m=(u-p)/2+p
		if(x<=v[m])
			u=m;
		else
			p=m+1;
	}
	return p;
}

int main()
{
	ifstream in("cautbin.in");
	ofstream out("cautbin.out");
	int r,n,v[N],i,tip,x,m;
	in>>n;
	for(i=1;i<=n;++i)
		in>>v[i];
	in>>m;
	while(m--)
	{
		in>>tip>>x;
		r=caut(x,n,v);
		if(tip==0)
			if(v[r]==x)
				out<<r<<"\n";
			else
				out<<"-1\n";
		if(tip==1)
			if(v[r]<=x)
				out<<r<<"\n";
			else
				out<<r-1<<"\n";
		if(tip==2)
			if(v[r]>=x)
				out<<r<<"\n";
			else
				out<<r+1<<"\n";
	}
	in.close();
	out.close();
	return 0;
}