Cod sursa(job #1189627)

Utilizator sam09Muntean Sam sam09 Data 23 mai 2014 11:46:08
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");


int p,n,k;
int a[100001],pred[100001];
int i, dp[100001];
#define cout g
int j,b[1000001];

int main()
{
    f>>p>>n;
    for(i=1; i<=n; i++)
    {
        f>>a[i];
        dp[i]=1;
    }

    for(i=1; i<=n; i++)
    {
        for(j=i+1; j<=n; j++)

            if(a[j]>a[i])
                if(dp[j]<dp[i]+1)
                {
                    dp[j]=dp[i]+1;
                    pred[j]=i;
                }
    }
    int maxi=-1;
    int pos=0;
    for(i=1; i<=n; i++)
    {
        if(dp[i]>maxi)
        {
            maxi=dp[i];
            pos=i;
        }
    }
    cout<<maxi<<'\n';
    while(pos)
    {
        b[++k]=a[pos];
        pos=pred[pos];
    }
    for(i=k;i>0;--i)
    cout<<b[i]<<" ";




    return 0;
}