Cod sursa(job #2321019)

Utilizator ilie0712Botosan Ilie ilie0712 Data 15 ianuarie 2019 16:27:54
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int N=1000001;

int n,secv,maxi=1,p;
int v[N],pred[N],lung[N],poz[N];

int main()
{
    in>>n;
    for(int i=1; i<=n; ++i) in>>v[i];
    lung[n]=1;
    poz[n]=-1;
    p=n;
    for(int i=n-1; i>=1; --i)
    {
        lung[i]=1;
        poz[i]=-1;
        for(int j=i+1; j<=n; ++j)
            if(v[i]<v[j] && lung[i]<lung[j]+1)
            {
                lung[i]=lung[j]+1;
                poz[i]=j;
                if(lung[i]>maxi)
                {
                    maxi=lung[i];
                    p=i;
                }
            }
    }
    int x=1;
    int i=p;
    while(i!=-1)
    {
        pred[x++]=v[i];
        i=poz[i];
    }
    out<<maxi<<"\n";
    for(int k=1; k<x; ++k) out<<pred[k]<<" ";
    return 0;
}