Pagini recente » Cod sursa (job #1852484) | Cod sursa (job #935271) | Cod sursa (job #1614528) | Cod sursa (job #2713089) | Cod sursa (job #1090048)
#include <iostream>
#include <fstream>
using namespace std;
#define MAXN 100005
ifstream f("scmax.in");
ofstream g("scmax.out");
int n;
int a[MAXN];
int dist[MAXN];
int prev[MAXN];
void remake(int nd) {
if (nd == prev[nd]) {
return;
}
remake(prev[nd]);
g << a[nd] << ' ';
}
int main()
{
f >> n;
for (int i = 1; i <= n; i++) {
f >> a[i];
}
a[0] = 0;
dist[0] = 0;
for (int i = 1; i <= n; i++) {
dist[i] = 0;
for (int j = 0; j < i; j++) {
if (dist[i] <= dist[j] && a[j] < a[i]) {
dist[i] = dist[j] + 1;
prev[i] = j;
}
}
}
int mx = 0, p = 0;
for (int i = 1; i <= n; i++) {
if (dist[i] > mx) {
mx = dist[i];
p = i;
}
}
g << mx << endl;
remake(p);
return 0;
}