Pagini recente » Cod sursa (job #339444) | Cod sursa (job #2826694) | Cod sursa (job #2955085) | Cod sursa (job #893542) | Cod sursa (job #2553627)
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int a[100001], lg[100001], urm[100001], n, i, j, jm, lgmax, im;
int main()
{
fin>>n;
for(i=1; i<=n; i++)
fin>>a[i];
lg[n]=1;
urm[n]=0;
for(i=n-1; i>=1; i--)
{
jm=0;
lgmax=0;
for(j=i+1; j<=n; j++)
if(a[i]<a[j]&&lg[j]+1>lgmax)
{
lgmax=lg[j];
jm=j;
}
lg[i]=lgmax+1;
urm[i]=jm;
}
lgmax=lg[i];
im=1;
for(i=2; i<=n; i++)
if(lg[i]>lgmax)
{
lgmax=lg[i];
im=i;
}
fout<<max(lgmax,1)<<'\n';
do
{
fout<<a[im]<<' ';
im=urm[im];
}
while(im!=0);
return 0;
}