Pagini recente » Cod sursa (job #1549911) | Cod sursa (job #1984229) | Cod sursa (job #1200685) | Borderou de evaluare (job #2883670) | Cod sursa (job #1043481)
#include <fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int x[100005],lis[100003],nr[100003],i,j,n,k,sub[100005],ll,maxx;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
cin>>x[i];
lis[n]=1;
for(i=n-1;i>=1;i--)
{
maxx=0;
for(j=i+1;j<=n;j++)
if(x[i]<x[j]&&lis[j]>maxx)
maxx=lis[j];
lis[i]=maxx+1;
}
maxx = 0;
for(i=1;i<=n;i++)
if(lis[i]>maxx)
maxx=lis[i];
cout<<maxx;
cout<<"\n";
for(i=1;i<=n;i++)
if(lis[i]==maxx)
{
k=0;
k++;
sub[k]=x[i];
ll=maxx;
while(ll!=0)
{
for(j=i+1;j<=n;j++)
if(lis[j]==ll-1&&x[i]<=x[j])
{
k++;
sub[k]=x[i];
j=n;
}
ll--;
}
for(i=1;i<=k;i++)
cout<<sub[i]<<" ";
}
}