Nu aveti permisiuni pentru a descarca fisierul grader_test3.ok

Cod sursa(job #2260740)

Utilizator 24601Dan Ban 24601 Data 15 octombrie 2018 15:21:50
Problema Subsir crescator maximal Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>
#include <string.h>

#define NMAX 100000

static int num[NMAX+1], seq[NMAX], pre[NMAX+1];

static void print_seq(int idx)
{
    if (idx == 0) {
        return;
    }

    print_seq(pre[idx]);
    printf("%d ", num[idx]);
}

int main(void)
{
    int n, i, seq_len, j;

    freopen("scmax.in", "r", stdin);
    freopen("scmax.out", "w", stdout);

    scanf("%d", &n);

    seq_len = 0;

    for (i = 1; i <= n; i++) {
        scanf("%d", &num[i]);

        if (i == 1 || num[i] < num[seq[0]]) {
            seq[0] = i;
            seq_len = seq_len == 0 ? 1 : seq_len;

            continue;
        }

        for (j = seq_len - 1; j >= 0; j--) {
            if (num[seq[j]] < num[i]) {
                seq[j + 1] = i;
                pre[i] = seq[j];
                seq_len += j == seq_len - 1;

                break;
            }
        }
    }

    printf("%d\n", seq_len);
    print_seq(seq[seq_len - 1]);

    return 0;
}