Pagini recente » Cod sursa (job #1793412) | Cod sursa (job #1582668) | Cod sursa (job #1250736) | Cod sursa (job #1778732) | Cod sursa (job #1457743)
#include<bits/stdc++.h>
using namespace std;
int N,M,x;
int op;
int arr[100001];
int lis[100001];
int previ[100001];
int maxi,indexi;
vector<int>sol;
int main()
{
//freopen("scmax.in","r",stdin);
// freopen("scmax.out","w",stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
cin>>N;
for(int i=0;i<N;i++)
cin>>arr[i];
for(int i=1;i<N;i++)
for(int j=0;j<i;j++)
if(arr[j]<arr[i] && lis[i]<lis[j]+1){
lis[i]=lis[j]+1;
previ[i]=j;
if(lis[i]>maxi)
maxi=lis[i],indexi=i;
}
//cout<<maxi<<" \n";
while(indexi!=0)
{sol.push_back(arr[indexi]);
indexi=previ[indexi];
}
cout<<maxi+1<<"\n";
for(int i=sol.size()-1;i>=0;i--)
cout<<sol[i]<<" ";
return 0;
}