Pagini recente » Cod sursa (job #2025995) | Cod sursa (job #1954450) | Cod sursa (job #2455259) | Cod sursa (job #1234170) | Cod sursa (job #2881684)
#include <bits/stdc++.h>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
#define cin f
#define cout g
const int Max = 1e5 + 1;
int n, arr[Max], lmax[Max], pred[Max];
int k, poz, ans[Max];
int main()
{
cin >> n;
for(int i=1;i<=n;i++)
{
cin >> arr[i];
lmax[i] = 1;
pred[i] = -1;
}
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
if(arr[j] < arr[i] and lmax[i] < lmax[j] + 1)
{
lmax[i] = lmax[j] + 1;
pred[i] = j;
}
}
poz = 1;
for(int i=1;i<=n;i++)
if(lmax[i] > lmax[poz])
poz = i;
k = lmax[poz];
cout<<k<<'\n';
while(poz != -1)
{
ans[k --] = arr[poz];
poz = pred[poz];
}
for(int i=1;i<=lmax[n];i++)
cout<<ans[i]<<" ";
return 0;
}