Cod sursa(job #384472)

Utilizator SheepBOYFelix Liviu SheepBOY Data 20 ianuarie 2010 09:59:26
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
#include<stdlib.h>
#include<algo.h>
using namespace std;
const int NMAX=100001;
int tcmp[NMAX],perm[NMAX];//path[NMAX],
int check[2000001];
int mat[100000][100000];
int main()
{
	int n,i,j,min=1<<30,max=0,nr=0;
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	scanf("%d",&n);
	for(i=0;i<n;++i)
	{
		scanf("%d",tcmp+i);
		perm[i]=tcmp[i];
	}
	sort(perm,perm+n);
	for(i=0;i<n;++i)
		for(j=0;j<n;++j)
			if(tcmp[i]==perm[j])
			{
				if(!check[perm[j]])
				{
					mat[i][j]=mat[i-1][j-1]+1;
					check[perm[j]]=1;
				//	path[nr++]=tcmp[i];
				}
				else
					mat[i][j]=(mat[i-1][j]<mat[i][j-1])?mat[i][j-1]:mat[i-1][j];
			}
			else
				mat[i][j]=(mat[i-1][j]<mat[i][j-1])?mat[i][j-1]:mat[i-1][j];
	printf("%d\n",mat[n-1][n-1]);
	//for(i=0;i<nr;++i)
	//	printf("%d ",path[i]);
	return 0;
}