Cod sursa(job #1342550)

Utilizator ralucik_2006Filimon Raluca Elena ralucik_2006 Data 14 februarie 2015 10:59:26
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

int a[100001],mx,pc,prec[100001],lg[100001],n,i,j,pz,vec[100001],nr;

int main()
{
    ifstream f("scmax.in");
    ofstream g("scmax.out");
    f>>n;
    for (i=1;i<=n;i++)
        f>>a[i];
    lg[n]=1;
    for (i=n;i>0;i--)
    {
        mx=-1;pc=i;
        for (j=i+1;j<=n;j++)
        {
            if (a[j]>a[i] && mx<lg[j])
            {
                mx=lg[j];
                pc=j;
            }
        }
        lg[i]=mx+1;
        prec[i]=pc;
    }
    for (i=1;i<=n;i++)
        if (lg[i]>=mx) {mx=lg[i];pz=i;}
    while (pz!=prec[pz])
    {
        nr++;
        vec[nr]=a[pz];
        pz=prec[pz];
    }
    nr++;
    vec[nr]=a[pz];
    g<<nr<<'\n';
    for (i=1;i<=nr;i++)
        g<<vec[i]<<" ";
    return 0;
}