Files
problemas-para-competicao-p…/longest-increasing-subsequence-II/src/TLE.cpp
2025-12-19 07:49:29 -03:00

47 lines
843 B
C++

#include <bits/stdc++.h>
using namespace std;
int main(){
int N; cin >> N;
vector<int> a(N);
for (int i = 0; i < N; i++) {
cin >> a[i];
}
vector<int> d(N, 1);
vector<int> p(N, -1);
for (int i = 0; i < N; i++) {
for (int j = 0; j < i; j++) {
if (a[j] < a[i] && d[j] + 1 > d[i]) {
d[i] = d[j] + 1;
p[i] = j;
}
}
}
int ans = d[0], pos = 0;
for (int i = 1; i < N; i++) {
if (d[i] > ans) {
ans = d[i];
pos = i;
}
}
vector<int> subseq;
while (pos != -1) {
subseq.push_back(a[pos]);
pos = p[pos];
}
reverse(subseq.begin(), subseq.end());
cout << ans << endl;
for (int i = 0; i < ans; i++) {
if (i != 0) cout << " ";
cout << subseq[i];
}
cout << endl;
return 0;
}