Cod sursa(job #523744)

Utilizator bogdan353Costea Bogdan bogdan353 Data 19 ianuarie 2011 09:06:23
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<iostream>
#include<fstream>
using namespace std;
int n, x[100000];


int cautbin_zero(int p)
{
	int m;
	int st=1;
	int dr=n;
	while(st<=dr)
	{
		m=(st+dr)/2;
		if(x[m]<=p)
			st=m+1;
		else dr=m-1;
	}
	m=(st+dr)/2;
	if(x[m]==p)
		return m;
	return -1;
}

int cautbin_unu(int p)
{
	
	int m;
	int st=1;
	int dr=n;
	while(st<=dr)
	{
		m=(st+dr)/2;
		if(x[m]<=p)
			st=m+1;
		else dr=m-1;
	}
	m=(st+dr)/2;
	
	return m;
}

int cautbin_doi(int p)
{
	
	int m;
	int st=1;
	int dr=n;
	while(st<=dr)
	{
		m=(st+dr)/2;
		if(x[m]<p)
			st=m+1;
		else dr=m-1;
	}
	m=(st+dr)/2;
	
	return m+1;
	
}

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

	int  i,t;
	int r,y;
	f>>n;
	for(i=1;i<=n;i++)
		f>>x[i];
	f>>t;
	for(i=1;i<=t;i++)
	{
		f>>r>>y;
		if(r==0)
			g<<cautbin_zero(y)<<'\n';
		if(r==1)
			g<<cautbin_unu(y)<<'\n';
		if(r==2)
			g<<cautbin_doi(y)<<'\n';
	}
		
}