Pagini recente » Cod sursa (job #2728890) | Cod sursa (job #140584) | Cod sursa (job #3176772) | Cod sursa (job #1544382) | Cod sursa (job #1124820)
#include<stdio.h>
FILE *in,*out;
//constante
const int Nmax=(int)1e5+1;
//variabile
int n,max;
int v[Nmax],best[Nmax];
int main(void)
{
in=fopen("scmax.in","rt");
out=fopen("scmax.out","wt");
fscanf(in,"%d",&n);
for(int i=1 ; i<=n ; ++i)
fscanf(in,"%d",&v[i]);
best[n]=1;
for(int i=n-1; i>=1 ; --i)
{
max=0;
for(int j=i+1 ; j<=n ; ++j)
if(v[i] < v[j] && best[j]>max)
max=best[j];
best[i]=1+max;
}
/*for(int i=1;i<=n;i++)
fprintf(out,"%d ",best[i]);*/
max=best[1];
int from=1;
for(int i=1 ; i<=n ; ++i)
if(best[i]>max)
{
max=best[i];
from=i;
}
fprintf(out,"%d\n",max);
fprintf(out,"%d ",v[from]);
for(int i=from+1 ; i<=n ; ++i)
{
if(v[i]>v[from] && max==best[i]+1)
{
fprintf(out,"%d ",v[i]);
max--;
}
}
fclose(in);
fclose(out);
return 0;
}