Cod sursa(job #502343)

Utilizator eudummyEduard eudummy Data 18 noiembrie 2010 22:31:11
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda biro_daily_quest_no.2 Marime 0.94 kb
#include <fstream.h>
#include <algorithm>
long int a[100005],mij;
int caut(long int x, long st, long dr)
{
	while (st<=dr)
	{
		mij=(st+dr)/2;
		if (a[mij]==x)
			return mij;
		else
			if (a[mij]>x)
				dr=mij-1;
			else
				st=mij+1;
	}
	return -1;
}

int main()
{
	long int n,i,j,k,tip,val;
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");
	f>>n;
	for (i=1;i<=n;i++)
		f>>a[i];
	f>>k;
	for (i=0;i<k;i++)
	{
		f>>tip>>val;
		if (tip==0)
		{
			j=caut(val,1,n);
			if (j!=-1)
				while (a[j]==a[j+1])
					j++;
			g<<j<<"\n";
		}
		else
			if (tip==1)
			{
				j=caut(val,1,n);
				if (j!=-1)
				{
					while (a[j]==a[j+1])
						j++;
				}
				else
					while (a[mij]==a[mij-1])
						mij--;
					j=mij-1;
				g<<j<<"\n";
			}
			else
			{
				j=caut(val,1,n);
				if (j!=-1)
					while (a[j]==a[j-1])
						j--;
				else
					j=mij;
				g<<j<<"\n";
			}
	}
	f.close();
	g.close();
}