Cod sursa(job #2526334)

Utilizator paul3ioanCirstean Paul Ioan paul3ioan Data 18 ianuarie 2020 15:10:36
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
//#include <iostream>
#include<fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
const int N = 1000001;
int dp[N], v[N];
int n;
int pozmax , pre[N];
int Lung_Max;
int main() {
    cin >> n;
    for( int i =1 ;i <=n;i ++)
        cin >> v[i];
    for( int i =1 ;i <=n; i++)
    {
        dp[i] = 1;
        for( int j =1; j < i ;j ++)
        {
            if(v[i] > v[j]) {
                if(dp[i] <dp[j] + 1)
                {
                    dp[i] = dp[j]  + 1;
                    pre[i] = j;
                }

            }

        }
        if(Lung_Max < dp[i]) {
            Lung_Max = dp[i];
            pozmax = i ;
        }
    }
    int k = 0, raspuns[N];
    cout << Lung_Max << '\n';
    for( int i = pozmax; i >=1; i = pre[i])
    {
        raspuns[++k] = v[i];
    }
    for ( int i = k ;i >=1 ;i --)
        cout << raspuns[i] << " ";
    return 0;
}