Pagini recente » Cod sursa (job #672725) | Cod sursa (job #132360) | Cod sursa (job #1483848) | Cod sursa (job #967157) | Cod sursa (job #1906277)
#include <fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int n,i,j,a[100005],dp[100005],pre[100005],sol[100005],k,poz,nsol;
int main()
{
cin>>n;
for(i=1;i<=n;++i)
cin>>a[i];
dp[1]=1;
for(i=2;i<=n;++i)
{
dp[i]=1;
pre[i]=i;
for(j=1;j<i;++j)
{
if(a[i]>a[j]) dp[i]=max(dp[i], 1+dp[j]), pre[i]=j;
}
}
for(i=1;i<=n;++i)
{
if(dp[i]>k) {k=dp[i]; poz=i;}
}
cout<<k<<"\n";
while(k>0)
{
sol[++nsol]=a[poz];
poz=pre[poz];
--k;
}
for(i=nsol;i>=1;--i) cout<<sol[i]<<" ";
return 0;
}