Pagini recente » Cod sursa (job #3234655) | Cod sursa (job #729373)
Cod sursa(job #729373)
#include <cstdio>
#define NMAX 100001
using namespace std;
int n, a[NMAX], d[NMAX];
void read() {
int i;
scanf("%d", &n);
for (i=1; i<=n; ++i)
scanf("%d", &a[i]);
}
int maxim(int y, int j) {
int x = 0;
for (int i=y; i<=j; ++i)
if (a[i]>a[y-1] && d[i]>x)
x = d[i];
return x;
}
void solve() {
int i;
d[n] = 1;
for (i=n; i>=1; --i)
d[i] = maxim(i+1, n) + 1;
}
void afis() {
int maxi = 0, i;
for (i=1; i<=n; ++i)
if (d[i]>maxi) maxi = d[i];
printf("%d\n", maxi);
for (i=1; i<=n; ++i)
if (d[i] == maxi) {
printf ("%d ", a[i]);
--maxi;
}
}
int main () {
freopen("scmax.in","r",stdin);
read();
fclose(stdin);
solve();
freopen("scmax.out","w",stdout);
afis();
fclose(stdout);
return 0;
}