Cod sursa(job #530067)

Utilizator marcelcodreaCodrea Marcel marcelcodrea Data 6 februarie 2011 19:31:51
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>

int a[100010];
int n;
int l[100010];
int wh[100010];
void printRec(int m) {
    if (m == -1) return;
     else {
            printRec(wh[m]);
            printf("%d ",a[m]);
    }
}
int main() {
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);

    scanf("%d",&n);
    for(int i = 0; i < n; i++)
     wh[i] = -1;
    for(int i = 0; i < n; i++) {
        scanf("%d",&a[i]);
    }
    for(int i = 0; i < n; i++) {
       l[i] = 1;
       for(int j = 0; j < i; j++)
        if (a[i] > a[j])
         if (l[i] < l[j] + 1) {
             l[i] = l[j] + 1;
             wh[i] = j;
        }
    }
    int max = 0;
    int poz = 0;
    for(int i = 0; i < n; i++)
     if (max < l[i]) {
        max = l[i];
        poz = i;
     }
     printf("%d\n",max);
     printRec(poz);

}