Pagini recente » Cod sursa (job #2060555) | Cod sursa (job #1427234) | Cod sursa (job #452358) | Cod sursa (job #2822028) | Cod sursa (job #1124594)
#include <cstdio>
using namespace std;
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");
int v[100001],t[100001],b[100001],maxim,pos,sol[100001];
int main()
{int n,i,j;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++) fscanf(f,"%d",&v[i]);
for (i=1;i<=n;i++) {b[i]=1;
for (j=i-1;j>=1;j--) if (v[i]>v[j]&&b[j]>=b[i]) {b[i]=b[j]+1;
t[i]=j;
}
}
for (i=n;i>=1;i--) if (b[i]>maxim) {maxim=b[i];pos=i;}
while (pos!=0) {sol[b[pos]]=pos;
pos=t[pos];
}
fprintf(g,"%d\n",maxim);
for (i=1;i<=maxim;i++) fprintf(g,"%d ",v[sol[i]]);
fprintf(g,"\n");
return 0;
}