Cod sursa(job #2763121)

Utilizator tigaieNedelcu Ioan-Andrei tigaie Data 11 iulie 2021 17:42:39
Problema Subsir crescator maximal Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.32 kb
#include <bits/stdc++.h>
#include <list>
#include <ext/pb_ds/assoc_container.hpp>
#define FOR(i , n) for(int i = 0 ; i < (n) ; i++)
#define N 201
#define apare printf("apare");
#define endl "\n"
using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int , int> pii;
const int inf = 1e6;
const int nax = 50001;

void LIS(vector<int> sequence){
    int n = sequence.size();
    vector<vector<int>>values(n);
    values[0].push_back(sequence[0]);
    for(int i = 1 ; i < n ; i++){
        for(int j = 0 ; j < i ; j++){
            if(sequence[i] > sequence[j] && values[i].size() < values[j].size() + 1)
                values[i] = values[j];
        }
        values[i].push_back(sequence[i]);
    }
    vector<int> max = values[0];
    for(auto x : values){
        if(x.size() > max.size())
            max = x;
    }
    cout << max.size() << endl;
    for(auto it : max){
        cout << it << " ";
    }
    cout << endl;
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    freopen("scmax.in" , "r" , stdin);
    freopen("scmax.out" , "w" , stdout);
    int n;
    cin >> n;
    vector<int> sequence;
    int buffer;
    FOR(i , n){
        cin >> buffer;
        sequence.push_back(buffer);
    }
    LIS(sequence);
    return 0;
}