Pagini recente » Cod sursa (job #7708) | Cod sursa (job #1219758) | Cod sursa (job #2988091) | Cod sursa (job #1260063) | Cod sursa (job #1090049)
#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 prrev[MAXN];
void remake(int nd) {
if (nd == prrev[nd]) {
return;
}
remake(prrev[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;
prrev[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;
}