Pagini recente » Cod sursa (job #1452610) | Cod sursa (job #1526689) | Cod sursa (job #3124315) | Cod sursa (job #1020351) | Cod sursa (job #408588)
Cod sursa(job #408588)
#include <stdio.h>
#define Nmax 100002
int v[Nmax], X[Nmax], T[Nmax], n, i, p, u, mid, sol;
FILE *f = fopen("scmax.in", "r");
FILE *g = fopen("scmax.out", "w");
void print_sol(int x) {
if (x) {
print_sol(T[x]);
fprintf(g, "%d ", v[x]);
}
else
fprintf(g, "%d\n", sol);
}
int main() {
fscanf(f, "%d", &n);
for (i = 1; i <= n; i++)
fscanf(f, "%d", &v[i]);
X[1] = 1, sol = 1;
for (i = 2; i <= n; i++) {
p = 1, u = sol;
while (p <= u) {
mid = (u - p) / 2 + p;
if (v[i] > v[X[mid]])
p = mid + 1;
else
u = mid - 1;
}
if (p > sol)
sol++;
X[p] = i;
T[i] = X[p-1];
}
print_sol(X[sol]);
fclose(f); fclose(g);
return 0;
}