Pagini recente » Cod sursa (job #702284) | Cod sursa (job #2569543) | Cod sursa (job #1644899) | Cod sursa (job #2303491) | Cod sursa (job #1785939)
#include <iostream>
#include <cstdio>
using namespace std;
int a[100001], l[100001], n;
int maxim(int i, int n)
{
int maxx = 0;
for(int j = i + 1; j <= n; j++)
if(l[j] > maxx && a[j] > a[i])
maxx = l[j];
return maxx;
}
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
l[n - 1] = 1;
for(int i = n - 2; i >= 0; i--)
l[i] = 1 + maxim(i, n - 1);
int maxi = 0;
for(int i = 0; i < n; i++)
if(l[i] > l[maxi])
maxi = i;
printf("%d ", a[maxi]);
for(int i = maxi; i < n - 1; )
for(int j = i + 1; j < n; j++)
if(l[j] < l[i] && a[j] > a[i])
{
printf("%d ", a[j]);
i = j;
break;
}
return 0;
}