Nu aveti permisiuni pentru a descarca fisierul grader_test3.ok
Cod sursa(job #2260740)
Utilizator | 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;
}