Pagini recente » Cod sursa (job #1701178) | Cod sursa (job #1889630) | Cod sursa (job #917642) | Cod sursa (job #2187796) | Cod sursa (job #2694171)
#include <stdio.h>
#define NMAX 100000
int v[NMAX + 1], d[NMAX + 1], pv[NMAX + 1], sol[NMAX + 1];
int main() {
FILE *fin, *fout;
fin = fopen("scmax.in", "r");
fout = fopen("scmax.out", "w");
int n, i, j, max1, pm, rez, prez, poz, nsol;
fscanf(fin, "%d", &n);
for (i = 0; i < n; i++)
fscanf(fin, "%d", &v[i]);
rez = 0;
for (i = 0; i < n; i++) {
pm = -1;
d[i] = 1;
for (j = 0; j < i; j++)
if (v[j] < v[i]) {
if (d[j] + 1 > d[i]) {
d[i] = d[j] + 1;
pm = j;
}
}
pv[i] = pm;
if (d[i] > rez) {
rez = d[i];
prez = i;
}
}
fprintf(fout, "%d\n", rez);
poz = prez;
nsol = 0;
while (poz != -1) {
sol[nsol++] = v[poz];
poz = pv[poz];
}
for (i = nsol - 1; i >= 0; i--)
fprintf(fout, "%d ", sol[i]);
return 0;
}