Cod sursa(job #3244434)

Utilizator GabrielPopescu21Silitra Gabriel - Ilie GabrielPopescu21 Data 24 septembrie 2024 19:45:49
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;

int a[100005], len[100005], index[100005];

int main()
{
    ifstream cin("scmax.in");
    ofstream cout("scmax.out");
    int n;
    cin >> n;
    for (int i = 1; i <= n; ++i)
        cin >> a[i];

    for (int i = 1; i <= n; ++i)
        for (int j = 0; j < i; ++j)
            if (a[i] > a[j] && len[j] + 1 > len[i])
                len[i] = len[j] + 1, index[i] = j;

    int maxim = len[1], pos = -1;
    for (int i = 2; i <= n; ++i)
        if (len[i] > maxim)
            maxim = len[i], pos = i;

    vector<int> ans;
    while (pos != 0)
    {
        ans.push_back(a[pos]);
        pos = index[pos];
    }

    cout << maxim << "\n";
    for (int i = ans.size()-1; i >= 0; ++i)
        cout << ans[i] << " ";

    return 0;
}