Cod sursa(job #301446)

Utilizator spidyvenomMarius Toma spidyvenom Data 8 aprilie 2009 11:11:34
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<fstream.h>
int n,m,v[100010];
ifstream f("cautbin.in");
ofstream g("cautbin.out");

void citire()
{
int i;
f>>n;
for(i=1;i<=n;i++)
	 f>>v[i];
f>>m;
}

int cautare(int x)
{
int p=1,u=n,mij;
while(p<u)
	{
	mij=(p+u)>>1;
	if(x<=v[mij])
		u=mij;
	else
		p=mij+1;
	}
return p;
}

int main()
{
citire();
int i,aux,x,r;
for(i=0;i<m;i++)
	{
	f>>aux>>x;
	r=cautare(x);
	if(aux==0)
		{
		if(v[r]!=x)
			r=-1;
		else
			while(v[r+1]==x)
				r++;
		}
	else
		if(aux==1)
			{
			while(v[r]>x)
				r--;
			}
		else
			while(v[r]<x)
				r++;
	g<<r<<'\n';
	}
return 0;
}