Cod sursa(job #2422644)

Utilizator MrFinn12Vasile Flavius MrFinn12 Data 19 mai 2019 14:17:29
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>

using namespace std;

int n,v[100001],dp[100001],pos[100001];
int sir[100001];

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

    f>>n;
    for(int i=0;i<n;i++)
        f>>v[i];
    dp[0]=1;

    for(int i=1;i<n;i++){
        int maxx=0;
        for(int j=0;j<i;j++)
            if(v[j]<v[i]&&dp[j]>maxx){
                maxx=dp[j];
                pos[i]=j;
            }
        dp[i]+=maxx+1;
    }
    int possol;

    int sol=0;
    for(int i=0;i<n;i++){
        if(dp[i]>sol){
            sol=dp[i];
            possol=i;
        }
        if(dp[i]==1)
            pos[i]=-1;
    }

    g<<sol<<endl;

    int x=possol;
    while(pos[x]!=-1){
        sir[dp[x]]=v[x];
        x=pos[x];
    }
    sir[1]=v[x];

    for(int i=1;i<=sol;i++)
        g<<sir[i]<<" ";
}