Cod sursa(job #579941)

Utilizator mcip1977Muresan Ciprian mcip1977 Data 12 aprilie 2011 16:39:08
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
#define DIM 100001
 
int L[DIM], ANT[DIM], SOL[DIM];
 
int n, a[DIM];
 
int main()
{
    int smax = -1, i, j,poz,k;
    fin >> n;
    for ( i = 0; i < n; ++i )
        fin >> a[i];
	for ( i = 0; i < n; ++i ) ANT[i]=-1;
    for ( i = 0; i < n; ++i )
    {
        L[i] = 1;
        for ( j = 0; j < i; ++j )
            if ( L[j] + 1 > L[i] && a[i] > a[j] )
                { L[i] = L[j] + 1;
			      ANT[i]=j;
				}
    }
    for ( i = 0; i < n; ++i )
        if ( smax < L[i]  )
            { smax = L[i];
		      poz=i;
			}
    fout <<  smax<<endl;
	i=poz;
	k=0;
	while(ANT[i]!=-1)
	{
		SOL[k]=a[i]; k++;
		i=ANT[i];
	}
	SOL[k]=a[i];
	for(i=k;i>=0;i--) fout<<SOL[i]<<" ";
	fin.close();
    fout.close();
    return 0;
}