Pagini recente » Cod sursa (job #472080) | Cod sursa (job #2262473) | Statistici Chelcioiu Ionut Daniel (minamino) | Cod sursa (job #2999631) | Cod sursa (job #2899364)
#include <stdio.h>
int v[100000];
int len[100000];
int rMax[100000];
int prev[100000];
int main() {
FILE *fin, *fout;
int n;
int i, j, k;
int indM, indA;
int res, best;
fin = fopen("scmax.in", "r");
fscanf(fin, "%d", &n);
for (i = 0; i < n; i++)
fscanf(fin, "%d", &v[i]);
fclose(fin);
/**
10
5 1 29 8 2 3 12 1 1 2
- 1 2 3
1 2 3 12
*/
res = 0;
for (i = 0; i < n; i++) {
len[i] = 1;
indA = 0;
prev[i] = j;
for(j = 0; j < i; j++) {
if (v[i] > v[j] && len[i] < len[j] + 1) {
len[i] = len[j] + 1;
prev[i] = j;
}
}
if (res < len[i]) {
best = i;
res = len[i];
}
}
fout = fopen("scmax.out", "w");
for (i = res - 1, j = best; i >= 0; i--, j = prev[j])
rMax[i] = v[j];
fprintf(fout, "%d\n", res);
for (i = 0; i < res; i++)
fprintf(fout, "%d ", rMax[i]);
fclose(fout);
return 0;
}