Pagini recente » Cod sursa (job #219032) | Cod sursa (job #2303137) | Cod sursa (job #2661124) | Cod sursa (job #2975263) | Cod sursa (job #2397284)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n, a[100001], poz[100001], dp[100001], b[100001], imax, maxi;
int main()
{
f >> n;
for (int i = 1; i <= n; ++i) f >> a[i];
dp[1] = 1;
poz[1] = poz[0] = 0;
for (int i = 2; i <= n; ++i) {
dp[i] = 1;
poz[i] = 0;
for (int j = 1; j < i; ++j)
if (a[i] > a[j] && dp[j] + 1 > dp[i]) {
dp[i] = dp[j] + 1;
poz[i] = j;
}
if (maxi < dp[i]) {
maxi = dp[i];
imax = i;
}
}
g << maxi << '\n';
int k = 0;
for (int i = imax; i; i = poz[i]) b[++k] = a[i];
for (int i = k; i; --i) g << b[i] << ' ';
g << '\n';
return 0;
}