Cod sursa(job #929934)

Utilizator heracleRadu Muntean heracle Data 27 martie 2013 12:48:45
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>

using namespace std;
ifstream in ("scmax.in");
ofstream out ("scmax.out");

const int OS=100001;
int v[OS],lung[OS],rez[OS],pred[OS];

int main()

{
    int n,i,j,max=0,imax,vmax,max0;
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    for(i=1;i<=n;i++)
    {
        lung[i]=0;
        for(j=1;j<i;j++)
            if(v[j]<v[i] && lung[j]>lung[i])
                {
                    lung[i]=lung[j];
                    pred[i]=j;
                }
        lung[i]++;
        if(lung[i]>max)
        {
            max=lung[i];
            imax=i;
            vmax=v[i];
        }
    }
    out<<max<<"\n";
    i=max;
    rez[max]=imax;
        while(i!=0)
        {
            i--;
            imax=pred[imax];
            rez[i]=imax;
        }
    for(i=1;i<=max;i++)
        out<<v[rez[i]]<<" ";
    return 0;
}