Pagini recente » Cod sursa (job #2579239) | Cod sursa (job #168016) | Cod sursa (job #3137697) | Cod sursa (job #2434024) | Cod sursa (job #2881690)
#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 poz;
vector < int > ans;
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;
cout<<lmax[poz]<<'\n';
while(poz != -1)
{
ans.push_back(arr[poz]);
poz = pred[poz];
}
reverse(ans.begin(), ans.end());
for(auto it : ans)
cout<<it<<" ";
return 0;
}