Cod sursa(job #555792)

Utilizator unknownliviuMaria Liviu Valentin unknownliviu Data 15 martie 2011 19:33:14
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
using namespace std;
ifstream in("secv.in");
ofstream out("secv.out");
const int N=5010;
int n,v[N],x[N],vmax=-1,lmax=-N;
pair<int,int>aux[N];

void read()
{
	in>>n;
	for(int i=1;i<=n;i++)
	{
		in>>aux[i].first;
		aux[i].second=i;
	}
	sort(aux+1,aux+n+1);
}

inline int max(int a,int b)
{
	return a>b?a:b;
}

void solve()
{
	//vmax=aux[n].first;
	int val=1;
	v[aux[1].second]=val;
	for(int i=2;i<=n;i++)
	{
		if(aux[i].first!=aux[i-1].first)
			++val;
		v[aux[i].second]=val;
	}
	vmax=val;
	for(int i=1;i<=n;i++)
	{
		if(v[i]==1)
			x[1] = i;
		else
			x[v[i]]= x[v[i]-1];
		if(v[i]==vmax && x[v[i]]!=0)
			lmax= max( lmax, i-x[v[i]]+1 );
	}
	out<<lmax;
}

int main()
{
	read();
	solve();
	return 0;
}