Pagini recente » Cod sursa (job #2030871) | Cod sursa (job #353125) | Cod sursa (job #1045714) | Cod sursa (job #2326856) | Cod sursa (job #2059064)
#include <bits/stdc++.h>
using namespace std;
const int NMAX=100010;
long long n,l[NMAX],v[NMAX],i,aux[NMAX];
void read()
{
scanf("%lld",&n);
for (int i=1; i<=n; ++i)
scanf("%lld", &v[i]);
}
void find_sub()
{
for (int i=2; i<=n; ++i)
{
long long max1=0;
for (int j=i-1; j>=1; --j)
if (v[i]>v[j]&& l[j]>max1) max1=l[j];
l[i]=1+max1;
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
read();
l[1]=1;
find_sub();
int imax=0,imin=0;
long long max1=0,min1=2100000000;
for (int i=1; i<=n; ++i)
{
if (l[i]>max1) max1=l[i], imax=i;
}
long long nrmax=l[imax];
printf("%lld \n",nrmax);
long long nr=0;
for (int i=2; i<=n; ++i)
if (l[i]==nr+1) printf("%d ",v[i]), nr++;
return 0;
}