Pagini recente » Cod sursa (job #2361239) | Cod sursa (job #2792487) | Cod sursa (job #2471775) | Cod sursa (job #96479) | Cod sursa (job #1168153)
#include <stdio.h>
using namespace std;
#define MAX 100000
int v[MAX+1];
int best[MAX+1];
int next[MAX+1];
int sol[MAX+1];
int main()
{
FILE *fin,*fout;
fin=fopen("scmax.in","r");
fout=fopen("scmax.out","w");
int i,n,ind,max,maxbest,indmax,j;
fscanf(fin,"%d",&n);
for(i=1;i<=n;i++)
fscanf(fin,"%d",&v[i]);
best[1]=1;
maxbest=1;
for(i=2;i<=n;i++)
{
max=0;
for(j=i-1;j>=1;j--)
if(v[i]>v[j]&&best[j]>max)
{
max=best[j];
ind=j;
}
best[i]=max+1;
if(maxbest<best[i])
{
maxbest=best[i];
indmax=i;
}
next[i]=ind;
}
fprintf(fout,"%d\n",maxbest);
i=indmax;
j=maxbest+1;
while(next[i]!=0)
{
sol[--j]=v[i];
i=next[i];
}
for(i=1;i<=maxbest;i++)
fprintf(fout,"%d ",sol[i]);
return 0;
}