Pagini recente » Cod sursa (job #1548963) | Cod sursa (job #870234) | Cod sursa (job #1044823) | Cod sursa (job #239182) | Cod sursa (job #2694316)
///O(n^2)
#include <bits/stdc++.h>
using namespace std;
#define x1 "scmax.in"
#define x2 "scmax.out"
ifstream in(x1);
ofstream out(x2);
#define NMAX 100000
int dp[NMAX], v[NMAX], ans[NMAX];
int main() {
int n, i, j, maxi = 0, poz = 0, cm;
in >> n;
for(i = 0; i < n; i++)
in >> v[i];
for(i = 0; i < n; i++) {
dp[i] = 1;
for(j = 0; j < i; j++)
if(v[j] < v[i])
dp[i] = max(dp[i], dp[j] + 1);
if(dp[i] > maxi) {
maxi = dp[i];
poz = i;
}
}
out << maxi << "\n";
cm = maxi;
for(i = poz; i >= 0 && maxi; i--)
if (dp[i] == maxi) {
ans[maxi--] = v[i];
}
for(i = 1; i <= cm; ++i) {
out << ans[i] << ' ';
}
}