Pagini recente » Cod sursa (job #238965) | Cod sursa (job #772647) | Cod sursa (job #2838749) | Cod sursa (job #1561432) | Cod sursa (job #1528006)
#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int sir[N], n, lenmax, ilenmax;
int rez[N];
int d[N];
void drum(int x)
{
if (x == rez[x] || !rez[x]) {printf("%d ", sir[x]); return;}
drum(rez[x]);
printf("%d ", sir[x]);
}
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &sir[i]);
rez[1] = 1;
d[1] = 1;
for (int i = 2; i <= n; i++)
{
int newlen = 0, inewlen = i;
for (int i1 = 1; i1 < i; i1++)
if (sir[i1] < sir[i] && d[i1] > newlen)
newlen = d[i1], inewlen = i1;
d[i] = newlen + 1;
rez[i] = inewlen;
}
for (int i = 1; i <= n; i++)
if (lenmax < d[i])
lenmax = d[i], ilenmax = i;
printf("%d\n", lenmax);
drum(ilenmax);
return 0;
}