Cod sursa(job #1452770)

Utilizator SwagginInMyJaysaaaaaaaaaaaas SwagginInMyJays Data 21 iunie 2015 19:51:43
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>
#include <vector>
#define FOR(i, n) for (int i = 0 ; i < (n); ++ i)

using namespace std;

const int possib = 100003;

int A[possib], op[possib], n, pre[possib], Optim, Poss;

int main(){
    freopen ("scmax.in", "r", stdin);
    freopen ("scmax.out", "w", stdout);
    scanf ("%d", &n);
    FOR(i, n)
       scanf ("%d", &A[i]), op[i] = 1, pre[i] = i;
    FOR(i, n){
        op[i] = 1;
        pre[i] = -1;
       FOR(j, i)
           if (A[j] < A[i] && op[i] < op[j] + 1)
              op[i] = op[j] + 1, pre[i] = j;
        if (op[i] > Optim)
            Optim = op[i], Poss = i;
    }
    printf ("%d\n", Optim);
    vector <int> pri(Optim);
    for (; pre[Poss] >= 0; Poss = pre[Poss])
        pri[--Optim] = A[Poss];
    pri[0] = A[Poss];
    for (const auto it : pri)
        printf ("%d ", it);
    return 0;
}