Pagini recente » Cod sursa (job #2003486) | Cod sursa (job #2720693) | Cod sursa (job #181206) | Cod sursa (job #1609161) | Cod sursa (job #1341796)
#include <fstream>
using namespace std;
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");
int n,a[100100],urm[100100],lg[100100],max1,im;
void read()
{
int i;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
fscanf(f,"%d",&a[i]);
}
void solve()
{
int i,j;
lg[n]=1;
for (i=n-1;i>0;i--)
{
for (j=i+1;j<=n;j++)
if (a[j]>a[i])
if (lg[j]+1>lg[i])
lg[i]=lg[j]+1,urm[i]=j;
}
for (i=1;i<=n;i++)
if (max1<lg[i])
max1=lg[i],im=i;
}
void write()
{
int j=0,i;
int sol[100100];
while (im)
sol[++j]=a[im],im=urm[im];
fprintf(g,"%d\n",j);
for (i=1;i<=j;i++)
fprintf(g,"%d ",sol[i]);
}
int main()
{
read();
solve();
write();
return 0;
}