Cod sursa(job #2029145)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 29 septembrie 2017 15:51:56
Problema Subsir crescator maximal Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>
#define MAX 100005

int n, a[MAX], b[MAX], p[MAX], lenb;

void print(int pos, int n) {
    while(p[n] != pos)
        --n;
    if(pos > 1)
        print(pos - 1, n - 1);
    printf("%d ", a[n]);
}

int main() {
    freopen("scmax.in", "r", stdin);
    freopen("scmax.out", "w", stdout);
    scanf("%d", &n);

    int j;
    for(int i = 1; i <= n; ++i) {
        scanf("%d", &a[i]);
        j = 1;
        while(b[j] < a[i] && j <= lenb)
            ++j;
        b[j] = a[i];
        p[i] = j;
        if(lenb < j)
            lenb = j;
    }

    printf("%d\n", lenb);
    print(lenb, n);
    return 0;
}