Cod sursa(job #174780)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 9 aprilie 2008 11:31:59
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <cstdio>
#define vv 100000

using namespace std;

int max,l[vv],n,a[vv];

void citire()
{
    freopen("scmax.in","r",stdin);
    scanf("%d", &n);
    for (int i=0; i<n; i++)
        scanf("%d", &a[i]);
    fclose(stdin);
}

void subsir()
{
    l[n-1]=1;
    max=1;
    for (int i=n-2; i>=0; i--)
    {
        for (int j=i+1; j<n; j++)
	    if (a[i]<a[j])
		 if (l[j]>l[i])
			l[i]=l[j];
//		l[i]>?=l[j];
    l[i]++;
    if (l[i]>max)
        max=l[i];
    }
}

void afisare()
{
    for (int i=0; i<n; i++)
        if (l[i]==max)
        {
            printf("%d ",a[i]);
            max--;
        }
        else if (l[i]==0)
                break;
}

int main()
{
    freopen("scmax.out","w",stdout);
    citire();
    subsir();
    printf("%d\n",max);
    afisare();
    return 0;
}