Pagini recente » Cod sursa (job #1207473) | Cod sursa (job #2649616) | Cod sursa (job #2578483) | Cod sursa (job #2440527) | Cod sursa (job #714183)
Cod sursa(job #714183)
#include <cstring>
#include <cstdio>
#include <cmath>
int n, m, p;
int a[100001];
int b[100001];
int c[100001];
FILE * in = fopen("scmax.in", "rt");
FILE * out = fopen("scmax.out", "wt");
void solve(int at, int val) {
while (val) {
if (b[at--] == val) {
solve(at, val - 1);
fprintf(out, "%d ", a[at + 1]);
return;
}
}
}
int main() {
fscanf(in, "%d", &n);
for (int i = 0; i < n; ++i) {
fscanf(in, "%d", &a[i]);
}
for (int i = 0; i < n; ++i) {
p = 0;
while (a[i] > c[p] && p <= m) {
++p;
}
b[i] = p;
c[p] = a[i];
if (m < p) m = p;
}
fprintf(out, "%d\n", m);
solve(n - 1, m);
fclose(in);
fclose(out);
}