Pagini recente » Cod sursa (job #1238508) | Cod sursa (job #3213997) | Cod sursa (job #2397537) | Cod sursa (job #1104253) | Cod sursa (job #534675)
Cod sursa(job #534675)
#include <stdio.h>
#define MAX 100001
int a[MAX], v[MAX], t[MAX], n, i, j, max1, sol, p;
void read()
{ freopen ("scmax.in","r", stdin);
freopen ("scmax.out","w", stdout);
scanf ("%d",&n);
for (i = 1; i <= n; ++i) scanf ("%d", &a[i]);
}
void solve()
{ v[n] = 1; t[n] = -1;
max1 = 1; p = n;
for(i = n - 1; i >= 1; --i)
{ v[i] = 1; t[i] = -1;
for (j = i + 1 ; j <=n; ++j)
if (a[i] < a[j] && v[i] < v[j] + 1)
{ v[i] = v[j]+1; t[i] = j;
if (v[i] > max1) {max1 = v[i]; p=i;}
}
}
i = p;
}
void write()
{ printf ("%d\n", max1);
while (i != -1) {printf ("%d ",a[i]); i = t[i];}
printf ("\n");
}
int main()
{ read();
solve();
write();
return 0;
}