Pagini recente » Cod sursa (job #1239954) | Cod sursa (job #2752205) | Cod sursa (job #2364811) | Cod sursa (job #316533) | Cod sursa (job #2965298)
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>
const int32_t MAX_N = 100000;
uint32_t v[MAX_N], len[MAX_N], pos[MAX_N];
int main() {
FILE* fin = fopen("scmax.in", "r");
FILE* fout = fopen("scmax.out", "w");
uint32_t n;
fscanf(fin, "%u", &n);
for(uint32_t i = 0; i != n; ++i)
fscanf(fin, "%u", v + i);
uint32_t max = 0, start = n;
for(uint32_t i = n - 1; i != UINT_MAX; --i) {
len[i] = 1;
pos[i] = n;
if(len[i] > max) {
max = len[i];
start = i;
}
for(uint32_t j = i + 1; j != n; ++j) {
if(v[i] < v[j] && len[i] < len[j] + 1) {
len[i] = len[j] + 1;
pos[i] = j;
if(len[i] > max) {
max = len[i];
start = i;
}
}
}
}
fprintf(fout, "%u\n", max);
uint32_t i = start;
while(i != n) {
fprintf(fout, "%u ", v[i]);
i = pos[i];
}
fclose(fin);
fclose(fout);
return 0;
}