Cod sursa(job #545311)

Utilizator Teodor94Teodor Plop Teodor94 Data 3 martie 2011 08:49:29
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
// se transforma vectorul cu valori de max 2 miliarde in vector cu valori de max 5000.
#include<cstdio>
#include<vector>
#include<algorithm>

using namespace std;

const int N=5005;

vector <pair < int,int > > a(N);
int n,x[N],pozi[N],upoz[N];

void citire()
{
	freopen("secv.in","r",stdin);
	freopen("secv.out","w",stdout);
	scanf("%d",&n);
	for (int i=1;i<=n;++i)
	{
		scanf("%d",&a[i].first);
		a[i].second=i;
	}
	sort(&a[1],&a[n+1]);
	x[a[1].second]=1;
	for (int i=2;i<=n;++i)
		if (a[i].first==a[i-1].first)
			x[a[i].second]=x[a[i-1].second];
		else
			x[a[i].second]=x[a[i-1].second]+1;
}

int aflumax(int a[])
{
	int max=x[1];
	for (int i=2;i<=n;++i)
		if (x[i]>max)
			max=x[i];
	return max;
}

void rez()
{
	for (int i=1;i<=n;++i)
		if (x[i]==1)
		{
			upoz[1]=i;
			pozi[1]=i;
		}
		else
		{
			upoz[x[i]]=i;
			pozi[x[i]]=pozi[x[i]-1];
		}
	int xx=aflumax(x);
	printf("%d\n",upoz[xx]-pozi[xx]+1);
}

int main()
{
	citire();
	rez();
	return 0;
}