Pagini recente » Cod sursa (job #744384) | Cod sursa (job #2726846) | Cod sursa (job #2880589) | Cod sursa (job #2008920) | Cod sursa (job #2648357)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n, a[100005], L[100005], maxgen;
void citire() {
f>>n;
for (int i = 1; i <= n; ++i)
f>>a[i];
}
void parcurgere() {
for (int i = 1; i <= n; ++i) {
int maxi = 0;
for (int j = 0; j < i; ++j)
if (a[j] < a[i])
maxi = max(maxi, L[j]);
L[i] = 1 + maxi;
maxgen = max(maxgen, L[i]);
}
}
void afisare(int nr, int poz)
{
if (nr == 0)
return;
for (int i = poz;; i--)
if (L[i] == nr) {
afisare(nr - 1, i - 1);
g << a[i] << ' ';
return;
}
}
int main() {
citire();
parcurgere();
g << maxgen << '\n';
afisare(maxgen, n);
return 0;
}