Cod sursa(job #1242160)

Utilizator ducu34Albastroiu Radu Gabriel ducu34 Data 14 octombrie 2014 00:13:53
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int i,x,j,k,v[10001],tip,n;
int caut(int x,int y,int r)
{
	int w;
	w=(x+y)/2;
	if(v[w]==r)
	{
		while(v[w+1]==r)
			w++;
		return w;
	}
	else
		if(w<r)
			return caut(x,w,r);
		else
			if(w>r)
				return caut(w,y,r);
	return -1;
}
int caut3(int x,int y,int r)
{
	int w;
	w=(x+y)/2;
	if(v[w]==r)
	{
		while(v[w-1]==r)
			w--;
		return w;
	}
	else
		if(w<r)
			return caut(x,w,r);
		else
			if(w>r)
				return caut(w,y,r);
}
int main()
{
	fin>>n;
	for(i=1;i<=n;i++)
	{
		fin>>v[i];
	}
	fin>>k;
	for(i=1;i<=k;i++)
	{
		fin>>tip>>x;
		tip++;
		if(tip==1)
			fout<<caut(1,n,x)<<"\n";
		else
			if(tip==2)
			{	
				for(j=0;j<n;j++)
				{
					if(caut(1,n,x)>0)
					{
						fout<<caut(1,n,x)<<"\n";
						break;
					}
				}
			}
			else
				fout<<caut3(1,n,x)<<"\n";
	}
	return 0;
}