Pagini recente » Cod sursa (job #2221775) | Cod sursa (job #1324045) | Cod sursa (job #1004900) | Cod sursa (job #566596) | Cod sursa (job #1656178)
#include <iostream>
#include <cstdio>
using namespace std;
const long nmax=100001;
struct w{unsigned long val; unsigned long x;};
struct w rangmax;
unsigned long n,x,y,v[nmax],rang[nmax];
void citire()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%ld",&n);
for(x=1;x<=n;x++)
scanf("%ld",&v[x]);
}
int main()
{
citire();
for(x=n;x>=1;x--)
{
for(y=x+1;y<=n;y++)
if(v[y]>v[x] && rang[y]+1>rang[x])
rang[x]=rang[y]+1;
if (!rang[x]) rang[x]=1;
if (rang[x]>rangmax.val){rangmax.val=rang[x]; rangmax.x=x;}
}
printf("%ld\n",rangmax.val);
for(x=rangmax.x;x<=n;x++)
{
if (rang[x]==rangmax.val)
{
rangmax.val--;
printf("%ld ",v[x]);
}
if (!rangmax.val) {printf("\n");return 0;}
}
}