Cod sursa(job #829263)

Utilizator vaneacsuVlad Neacsu vaneacsu Data 4 decembrie 2012 23:14:20
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
using namespace std;
int main()
{
	ifstream cin("cautbin.in");
	ofstream cout("cautbin.out");
	int n, m, v[100005], k, x, mid, st, dr;
	cin>>n;
	for (int i=1; i<=n; i++)
		cin>>v[i];
	cin>>m;
	for (int j=1; j<=m; j++)
	{
		cin>>k>>x;
		st=0;
		dr=n+1;
		if (k==0)
		{
			while (st+1<dr)
			{
				mid=(st+dr)/2;
				if(x<v[mid])
					dr=mid;
				else
					st=mid;
			}
			if (v[st]==x)
				cout<<st<<"\n";
			else
				cout<<"-1"<<"\n";
		}
		if (k==1)
		{
			while (st+1<dr)
			{
				mid=(st+dr)/2;
				if(x>=v[mid])
					st=mid;
				else
					dr=mid;
			}
			cout<<st<<"\n";
		}
		if (k==2)
		{
			while (st+1<dr)
			{
				mid=(st+dr)/2;
				if(x<=v[mid])
					st=mid;
				else
					dr=mid;
			}
			cout<<st<<"\n";
		}
	}
	return 0;
}