Pagini recente » Cod sursa (job #2738228) | Cod sursa (job #2290898) | Cod sursa (job #2422796) | Cod sursa (job #149280) | Cod sursa (job #1748100)
#include<bits/stdc++.h>
#define maxN 100005
using namespace std;
deque<int> q;
int v[maxN],l[maxN],n,maxim,pre[maxN],imax;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
l[0]=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
for(int i=1;i<=n;i++)
{
maxim=0;
int jmax=0;
for(int j=0;j<i;j++)
{
if (v[j]<v[i])
{
if (l[j]>maxim) maxim=l[j],jmax=j;
}
}
l[i]=maxim+1;
pre[i]=jmax;
}
maxim=0;
for(int i=1;i<=n;i++)
{
if (l[i]>maxim)
{
maxim=l[i];
imax=i;
}
}
printf("%d\n",maxim);
int j=imax;
while (j>0)
{
q.push_back(v[j]);
// printf("%d\n",v[j]);
j=pre[j];
}
while (!q.empty())
{
printf("%d ",q.back());
q.pop_back();
}
printf("\n");
return 0;
}