Cod sursa(job #2121269)

Utilizator Andrei17Andrei Pascu Andrei17 Data 3 februarie 2018 15:14:39
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>

using namespace std;

ifstream in("scmax.in");
ofstream out("scmax.out");

const int N = 100001;

int n, v[N], lung[N], m;

void print(int i) {
    if (lung[i] == 1) {
        out << v[i] << ' ';
        return;
    }
    int j;
    for (j = i - 1; j > 0 && lung[i] - 1 != lung[j]; j--);
    print(j);
    out << v[i] << ' ';
}

int main()
{
    int poz = 0;
    in >> n;
    for (int i = 1; i <= n; i++) {
        in >> v[i];
        for (int j = 1; j < i; j++) {
            if (v[j] < v[i]) lung[i] = max(lung[i], lung[j]);
        }
        lung[i]++;
        if (m < lung[i]) {
            m = lung[i];
            poz = i;
        }
    }
    out << m << '\n';
    print(poz);
}