Pagini recente » Cod sursa (job #14569) | Cod sursa (job #1369568) | Cod sursa (job #1224547) | Cod sursa (job #262382) | Cod sursa (job #811128)
Cod sursa(job #811128)
#include <cstdio>
using namespace std;
#define dim 100000
int n,a[dim],L[dim],p[dim];
FILE *f1=fopen("scmax.in","r"),*f2=fopen("scmax.out","w");
int init()
{
for (int i=1;i<=n;i++)
L[i]=1,p[i]=i;
}
void read()
{
fscanf(f1,"%d\n",&n);
for (int i=1;i<=n;i++)
fscanf(f1,"%d ",&a[i]);
fclose(f1);
}
void PD()
{
int i,j;
for (i=n-1;i>=1;i--)
for (j=i+1;j<=n;j++)
if (a[i]<a[j] && L[i]<=L[j])
L[i]=L[j]+1,p[i]=j;
}
int search()
{
int k,max=-1,i;
for (i=1;i<=n;i++)
if (L[i]>max)
max=L[i],k=i;
return k;
}
void print(int k)
{
int i,j;
fprintf(f2,"%d\n",L[k]);
for (i=1,j=k;i<=L[k];i++,j=p[j])
fprintf(f2,"%d ",a[j]);
fprintf(f2,"\n");
fclose(f2);
}
int main (void)
{
read();
init();
PD();
int k;
k=search();
print (k);
return 0;
}