Cod sursa(job #2478894)

Utilizator enedumitruene dumitru enedumitru Data 22 octombrie 2019 20:56:55
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include<fstream>
using namespace std;
ifstream f("scmax.in"); ofstream g("scmax.out");
int n,v[100003],lg[100003],p[100003],sol[100003];
int main()
{   f>>n;
    for(int i=1;i<=n;++i) f>>v[i];
    lg[1]=1; p[1]=1;
    for(int i=2;i<=n;++i)
    {   p[i]=i;
        for(int j=i-1;j;--j)
            if(v[j]<v[i] && lg[i]<lg[j]) {lg[i]=lg[j]; p[i]=j;}
        lg[i]++;
    }
    int k=1;
    for(int i=2;i<=n;++i)
        if(lg[k]<lg[i]) k=i;
    int m=lg[k];
    g<<m<<'\n';
    for(int i=1;i<=m;i++,k=p[k]) sol[m-i+1]=v[k];
    for(int i=1;i<=m;i++) g<<sol[i]<<' ';
    g.close(); return 0;
}