Pagini recente » Cod sursa (job #15634) | Cod sursa (job #2310223) | Cod sursa (job #539368) | Cod sursa (job #2437391) | Cod sursa (job #1098827)
#include <iostream>
#include <fstream>
using namespace std;
int sir[100005],n;
int k[100005];
int subsir[100005];
int lmax,poz;
void citire()
{
scanf("%d\n",&n);
for(int i=1;i<=n;++i)
scanf("%d\n",&sir[i]),k[i]=1;
}
void rez()
{
for(int i=n;i>=1;--i)
for(int j=i+1;j<=n;++j)
if(sir[i]<sir[j] && k[i]<=k[j])
++k[i];
for(int i=1;i<=n;i++)
if(k[i]>lmax)
lmax=k[i],poz=i;
printf("%d\n",lmax);
}
void drum()
{ int h=1;
subsir[h++]=sir[poz];
while(lmax!=1)
for(int i=poz;i<=n;i++)
if(lmax-1==k[i])
{
poz=i;
subsir[h++]=sir[i];
lmax--;
}
for(int i=1;i<h;i++)
printf("%d ",subsir[i]);
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
citire();
rez();
drum();
return 0;
}