Cod sursa(job #413716)

Utilizator johnbBaranga Ionut johnb Data 9 martie 2010 00:25:13
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <limits.h>

#define nill -1

using namespace std;

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

int n, 
    *elem, 
    *best,
    *pre;

void write(int poz) {
     if (best[poz] == 1) {
        out << elem[poz] << " ";
        return;
     }
     write(pre[poz]);
     out << elem[poz] << " ";
}


int main() {

    in >> n;
    elem = new int[n];
    best = new int[n];
    pre  = new int[n];
    for (int i = 0; i < n; i++)
        in >> elem[i];
    int max;
    best[0] = 1;
    for (int j = 1; j < n; j++) {
        max = 0;
        for (int k = 0; k < j; k++) {
            if (elem[k] < elem[j] && best[k] > max) {
               max = best[k];
               pre[j] = k;
            }
        }
        best[j] = 1 + max;
    }
    int max_poz = 0;
    for (int i = 0; i < n; i++)
        if (best[i] > best[max_poz])
           max_poz = i;
    out << best[max_poz] << "\n";
    write(max_poz);
    return 0;
}