Pagini recente » Monitorul de evaluare | Profil DogaruMihai | Istoria paginii utilizator/liviu_radu | Cod sursa (job #609780) | Cod sursa (job #2354953)
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int n, i, lg[100010], urm[100010], a[100010], maxi, mx, j, nr;
int main()
{
fin>>n;
for (i=1; i<=n; i++)
fin>>a[i];
lg[n]=1;
for (i=n-1; i>=1; i--)
{
mx=0;
for (j=i+1; j<=n; j++)
if (a[i]<a[j] && 1+lg[j]>mx)
{
mx=1+lg[j];
urm[i]=j;
}
lg[i]=mx;
if (lg[i]>maxi)
maxi=lg[i];
}
fout<<maxi<<'\n';
for (i=1; 1; i++)
if (lg[i]==maxi)
break;
fout<<a[i]<<' ';
nr=1;
while (1)
{
fout<<a[urm[i]]<<' ';
i=urm[i];
nr++;
if (nr==maxi)
break;
}
return 0;
}