Pagini recente » Cod sursa (job #2824735) | Cod sursa (job #2347024) | Cod sursa (job #3033370) | Cod sursa (job #2982895) | Cod sursa (job #2409711)
#include <bits/stdc++.h>
#define DEF 100010
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int n, V[DEF], Dp[DEF], maxim, Pred[DEF], posMaxim;
vector < int > Sol;
int main () {
fin >> n;
for (int i = 1; i <= n; ++ i) {
fin >> V[i];
}
Dp[1] = 1;
for (int i = 2; i <= n; ++ i) {
Dp[i] = 1;
for (int j = 1; j < i; ++ j) {
if (V[j] < V[i] and Dp[j] + 1 > Dp[i]) {
Dp[i] = Dp[j] + 1;
Pred[i] = j;
}
}
}
for (int i = 1; i <= n; ++ i) {
if (maxim < Dp[i]) {
maxim = Dp[i];
posMaxim = i;
}
}
fout << maxim << "\n";
while (posMaxim) {
Sol.push_back (V[posMaxim]);
posMaxim = Pred[posMaxim];
}
for (int i = Sol.size () - 1; i >= 0; -- i) {
fout << Sol[i] << " ";
}
return 0;
}