Cod sursa(job #613399)

Utilizator florin.ilieFlorin Ilie florin.ilie Data 24 septembrie 2011 07:13:29
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>

int a[100000],n,m;
void init ()
{
	freopen("cautbin.in","r",stdin);
	freopen("cautbin.out","w",stdout);
}
void citire ()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	scanf("%d",&m);
}
int max_pos (int x)
{
	int s=0;
	for(int j=1;j<=n;j++){
		if(a[j]==x)
			s=j;
		if(a[j]>x)
			break;
		if(a[j]!=x)
			s=-1;
	}
	return s;
}
int pos_max (int x)
{
	int j;
	for(j=1; j<=n && a[j]<=x;j++);
	return j-1;
}
int pos_min (int x)
{
	int j;
	for(j=1; j<=n && a[j]<x;j++);
	return j+1;
}
void intrebari ()
{
	int tip,nr;
	for(int i=1;i<=m;i++)
	{
		scanf("%d %d",&tip,&nr);
		if(tip==0)
			printf("%d\n",max_pos(nr));
		else if (tip==1)
			printf("%d\n",pos_max(nr));
		else
			printf("%d\n",pos_min(nr));
	}
}
int main ()
{
	init();
	citire();
	intrebari();
	return 0;
}