Pagini recente » Cod sursa (job #2093879) | Cod sursa (job #2502043) | Cod sursa (job #794206) | Cod sursa (job #166208) | Cod sursa (job #3207936)
#include <bits/stdc++.h>
void read_input(int &n, std::vector<int> &vec)
{
std::ifstream fin("scmax.in");
fin >> n;
vec.resize(n);
for (int i = 0; i < n; ++i)
fin >> vec[i];
fin.close();
}
void print_output(int &len, std::vector<int> &seq)
{
std::ofstream fout("scmax.out");
fout << len << '\n';
for (auto &nr : seq)
fout << nr << ' ';
fout << '\n';
fout.close();
}
int main()
{
int n;
int len = 0;
std::vector<int> v;
std::vector<int> dp;
std::vector<int> seq;
read_input(n, v);
dp.resize(n, 0);
for (int index, i = 0; i < n; ++i) {
index = i;
for (int j = i - 1; j >= 0; --j)
if (v[j] < v[i] && dp[j] > dp[index])
index = j;
dp[i] = dp[index] + 1;
len = std::max(len, dp[i]);
}
for (int l = len, i = n - 1; i >= 0; --i) {
if (dp[i] == l) {
seq.insert(seq.begin(), v[i]);
--l;
}
}
print_output(len, seq);
return 0;
}