Pagini recente » Cod sursa (job #116405) | Cod sursa (job #2506627) | Cod sursa (job #2321955) | Cod sursa (job #768679) | Cod sursa (job #1717307)
#include <iostream>
#include <cstdio>
using namespace std;
int poz[100010],v[100010];
void afis(int b)
{
printf("%d ",v[b]);
if (poz[b]==b)
return;
afis(poz[b]);
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
int n,l[100010];
int maxim=0,pozmax;
scanf("%d", &n);
for (int i=1;i<=n;++i)
scanf("%d",&v[i]);
l[n]=1;
poz[n]=n;
for (int i=n-1;i>=1;--i)
{
poz[i]=i;
l[i]=1;
for (int j=i+1;j<=n;++j)
if (v[i]<v[j] && l[i]-1<l[j])
{
l[i]=1+l[j];
poz[i]=j;
}
if (l[i]>maxim)
{
maxim=l[i];
pozmax=i;
}
}
printf("%d\n",maxim);
afis(pozmax);
return 0;
}