Cod sursa(job #539783)

Utilizator dragosd2000Dumitrache Dragos dragosd2000 Data 23 februarie 2011 12:51:11
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include<fstream.h>
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int i,h,g,k,j;
int n,a[100],m,b[100][2];
void cit()
{
	fin>>n;
	for(i=1;i<=n;i++)
		fin>>a[i];//citim vectorul
	fin>>m;
	for(i=1;i<=m;i++)
		fin>>b[i][1]>>b[i][2];
}

void binar()
{
	int i,l;
	if(n%2==0)
		l=n/2;
		else
			l=n/2+1;
	for(i=1;i<=m;i++)
		
		if(b[i][2]>a[l])
			{
				g=l;
			h=n;
		}
		else
			if(b[i][2]<=a[l])
				{
					g=1;
				h=l;
			}
		if(g==1)
	for(i=g;i<=h;i++)
		{
			k=-1;
			if(b[i][1]==0)
				{
					for(j=1;j<=n;j++)
					if(b[i][2]==a[j])
						k=j;
				}
			if(b[i][1]==1)
				{
					for(j=1;j<=n;j++)
						if(b[i][2]>=a[j])
							k=j;
				}
			if(b[i][1]==2)
			{
				for(j=n;j>=1;j--)
					if(b[i][2]<=a[j])
						k=j;
			}
			fout<<k<<'\n';
		}
	else
		if(g!=1)
			for(i=h;i>=g;i--)
		{
			k=-1;
			if(b[i][1]==0)
				{
					for(j=1;j<=n;j++)
					if(b[i][2]==a[j])
						k=j;
				}
			if(b[i][1]==1)
				{
					for(j=1;j<=n;j++)
						if(b[i][2]>=a[j])
							k=j;
				}
			if(b[i][1]==2)
			{
				for(j=n;j>=1;j--)
					if(b[i][2]<=a[j])
						k=j;
			}
			fout<<k<<'\n';
		}
}



int main()
{
	cit();
	binar();
	return 0;
}