Pagini recente » Cod sursa (job #45850) | Cod sursa (job #2303355) | Cod sursa (job #2070220) | Cod sursa (job #2540686) | Cod sursa (job #2204402)
#include <fstream>
using namespace std;
int v[100005],dp[100005];
int t[100005],sol[100005],k;
int i,n;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
void reconst(int curr)
{
if(t[curr]!=0)
reconst(t[curr]);
cout<<v[curr]<<" ";
}
int main()
{
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
t[1]=0;
for(i=1;i<=n;i++)
{
int mx=0;
int pos=0;
for(int j=1;j<i;j++)
{
if(v[j]<v[i])
{
if(dp[j]>mx){
mx=dp[j];
pos=j;
}
}
}
dp[i]=1+mx;
t[i]=pos;
}
int mx=0;
int pos=0;
for(int i=1;i<=n;i++)
{
if(dp[i]>mx){
mx=dp[i];
pos=i;
}
}
//reconst(pos);
int cnt=mx;
cout<<mx<<endl;
for(i=n;i>0;i--)
{
if(dp[i]==cnt)
{
sol[++k]=v[i];
cnt--;
}
}
for(int i=k;i>=1;i--)
cout<<sol[i]<<" ";
return 0;
}