Cod sursa(job #710207)

Utilizator radu102Radu Nicolau radu102 Data 9 martie 2012 11:21:37
Problema Cautare binara Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include<iostream>
#include<fstream>
using namespace std;
int v[100001],n;
int cautbin0(int x)
{
	int sol = -1;
	int min=1, max=n;
	while(min!=max)
	{
		int poz=(min+max)/2;
		if(v[poz]>x)
			max=poz;
		else if(v[poz]<=x)
			min=poz+1;
		if(v[poz] == x)
			sol = poz;
	}
	return sol;
}
int cautbin1(int x)
{
	int min=1, max=n, sol;
	while(min!=max)
	{
		int poz=(min+max)/2;
		if(v[poz]>x)
			max=poz;
		else if(v[poz]<x)
		{
			min=poz+1;
			sol=poz;
		}
		else
		{
			min=poz+1;
			sol=poz;
		}
	}
	return sol;
}
int cautbin2(int x)
{
	int min=1, max=n, sol;
	while(min!=max)
	{
		int poz=(min+max)/2;
		if(v[poz]>x)
			max=poz;
		else if(v[poz]<x)
		{
			min=poz+1;
			sol=poz;
		}
		else
		{
			max=poz;
			sol=poz;
		}
	}
	return sol+1;
}
int main()
{
	ifstream g("cautbin.in");
	ofstream h("cautbin.out");
	int m,tip,x;
	g>>n;
	for(int i=1;i<=n;i++)
	{
		g>>v[i];
	}
	g>>m;
	for(int k=1;k<=m;k++)
	{
		g>>tip>>x;
		if( tip == 0)
			h<<cautbin0(x)<<"\n";
		else if(tip ==1 )
			h<<cautbin1(x)<<"\n";
		else h<<cautbin2(x)<<"\n";
	}
}