Pagini recente » Cod sursa (job #1778733) | Cod sursa (job #2839611) | Cod sursa (job #2863900) | Cod sursa (job #2839615) | Cod sursa (job #486619)
Cod sursa(job #486619)
#include <stdio.h>
#define DIM 100001
int N, A[DIM], X[DIM], Sol[DIM], T[DIM];
void cit () {
scanf ("%d", &N);
for (int i=1; i<=N; ++i)
scanf ("%d", &A[i]);
}
int bin (int val) {
int p=1, u=X[0], m;
while (p<=u) {
m = (p+u)/2;
if (A[X[m]] < val)
p = m + 1;
else
u = m - 1;
}
return u;
}
void parc () {
int poz;
X[0] = X[1] = 1;
for (int i=2; i<=N; ++i) {
poz = bin (A[i]) + 1;
X[poz] = i;
if (X[0] < poz) X[0] = poz;
T[i] = X[poz-1];
}
}
void afs () {
int poz = X[X[0]];
printf ("%d\n", X[0]);
for (int i=1; i<=X[0]; ++i) {
//printf ("%d", A[poz]);
Sol[i] = A[poz];
poz = T[poz];
}
for (int i=X[0]; i>0; --i)
printf ("%d ", Sol[i]);
}
int main () {
freopen ("scmax.in", "r", stdin);
freopen ("scmax.out", "w", stdout);
cit ();
parc ();
afs ();
return 0;
}