Pagini recente » Cod sursa (job #1075067) | Cod sursa (job #938436) | Cod sursa (job #2884645) | Cod sursa (job #1373641) | Cod sursa (job #2878244)
#include <bits/stdc++.h>
#define MAXN 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, arr[MAXN], dp[MAXN], id[MAXN], sz = 1, poz;
void citire() {
fin >> n;
for (int i = 1; i <= n; i++)
fin >> arr[i];
}
void generare() {
dp[n] = 1, id[n] = -1, poz = n;
for (int i = n - 1; i >= 1; i--) {
dp[i] = 1;
for (int j = i + 1; j <= n; j++)
if (arr[i] < arr[j] && dp[i] < dp[j] + 1) {
dp[i] = dp[j] + 1;
id[i] = j;
if (dp[i] > sz) {
sz = dp[i];
poz = i;
}
}
}
}
void rezolvare() {
generare();
fout << sz << '\n';
int i = poz;
while (i > 0) {
fout << arr[i] << ' ';
i = id[i];
}
}
int main() {
citire();
rezolvare();
return 0;
}