Cod sursa(job #2021211)

Utilizator andra_moldovanAndra Moldovan andra_moldovan Data 12 septembrie 2017 21:26:23
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

#define MAXN 100002

using namespace std;

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

int x[MAXN], lg[MAXN], pred[MAXN], n;

inline void Read() {
    fin >> n;

    for (int i = 1; i <= n; i++)
        fin >> x[i];
}

inline void Write(int nn) {
    if (nn) {
        Write(pred[nn]);

        fout << x[nn] << " ";
    }
}

inline void Solve() {
    int p = 0;
    lg[1] = 1; pred[1] = 0;
    for (int i = 2; i <= n; i++) {
        lg[i] = 1; pred[i] = 0;

        for (int j = 1; j < i; j++) {
            if (lg[j] + 1 > lg[i] && x[j] < x[i]) {
                lg[i] = lg[j] + 1;
                pred[i] = j;
            }
        }

        if (lg[i] > lg[p])
            p = i;
    }

    fout << lg[p] << "\n";

    Write(p);
}


int main () {
    Read();
    Solve();

    fin.close(); fout.close(); return 0;
}