Pagini recente » Cod sursa (job #407915) | Cod sursa (job #821167) | Cod sursa (job #604453) | Cod sursa (job #2664308) | Cod sursa (job #2878870)
#include <fstream>
#include <vector>
using namespace std;
int main() {
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n;
fin >> n;
vector<int> vec(n);
for (auto& num : vec) {
fin >> num;
}
vector<int> dp(n, 1);
vector<int> prev(n, -1);
for (int i = 1; i < n; i += 1) {
for (int j = 0; j < i; j += 1) {
if (vec[i] > vec[j] && dp[j] + 1 > dp[i]) {
dp[i] = dp[j] + 1;
prev[i] = j;
}
}
}
int index = 0;
for (int i = 1; i < n; i += 1) {
if (dp[i] > dp[index]) {
index = i;
}
}
fout << dp[index] << "\n";
vector<int> res(dp[index]);
for (int i = res.size() - 1; i >= 0; i -= 1) {
res[i] = vec[index];
index = prev[index];
}
for (const auto& num : res) {
fout << num << " ";
}
fout << "\n";
return 0;
}