Cod sursa(job #546358)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 4 martie 2011 20:14:28
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
// ba desteptule! cautarea binara functioneaza numai pentru un vector sortat crescator.!

#include <fstream>
#include <iostream>

using namespace std;

int n, a[5002], m, b[5002];

int CautareBinara (int x)
{
	int st=0, dr=m-1, mij, poz=-1;
	while (st<=dr && poz==-1)
	{
		mij=(st+dr)/2;
		if (b[mij]==x)
			poz=mij;
		else
			if (b[mij]>x)
				dr=mij-1;
			else
				st=mij+1;
	}
	return poz;
}

/*
inline bool cmp (const Pozitii A, const Pozitii B)
{
	return A.nr<B.nr;
}
*/

int main ()
{
	ifstream f ("secv.in");
	f>>n;
	int i, k=0, x;
	f>>a[0];
	b[0]=a[0];
	m++;
	for (i=1; i<n; i++)
	{
		f>>a[i];
		if (a[i]>b[k])
		{
			b[++k]=a[i];
			m++;
		}
		else
		{
			
			x=CautareBinara (a[i]);
			if (x==-1)
			{
				k++;
				m++;
				b[k]=a[i];
			}
			else;
			sort (b, b+m);

		}
	}
	f.close ();
	int ok=0;
	
	for (i=0; i<n && a[i]!=b[0]; i++);
	
	k=1;
	int l=1, lmax=0;
	for (i++; i<n; i++)
	{
		l++;
		if (a[i]==b[k])
		{	
			k++;
			if (k==m)
			{
				ok=1;				
				if (l>lmax)
				lmax=l;
				l=1;
				k=0;
			}
		}
	}
	
	ofstream g ("secv.out");
	g<<lmax<<"\n";
	g.close();
	
	
	
	
	return 0;
}