Cod sursa(job #545320)

Utilizator nightwish0031Vlad Radu Cristian nightwish0031 Data 3 martie 2011 09:02:40
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
#include<vector>
#include<algorithm>

using namespace std;
const int N=5001;

vector <pair < int,int > > v(N);
int x[N];
int p[N],u[N];
int n;

void files()
{
	freopen("secv.in","r",stdin);
	freopen("secv.out","w",stdout);
}

void read()
{
	int i;
	files();
	scanf("%d",&n);
	for (i=1;i<=n;++i)
	{
		scanf("%d",&v[i].first);
		v[i].second=i;
	}
}

void transform()
{
	int i;
	
	sort(&v[1],&v[n+1]);
	x[v[1].second]=1;
	for (i=2;i<=n;++i)
		if (v[i].first==v[i-1].first) x[v[i].second]=x[v[i-1].second];
	else x[v[i].second]=1+x[v[i-1].second];
}

void solve()
{
	int i;
	transform();
	for (i=1;i<=n;++i)
	{
		u[x[i]]=i;
		if (i>=p[x[i]-1]) p[x[i]]=p[x[i]-1];
		if (x[i]==1) p[1]=i;
		if (p[x[i]]==0&&p[x[i]-1]) p[x[i]]=i;
	}
	
	printf("%d",n-p[x[n]]+1);
}

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