Pagini recente » Cod sursa (job #2036996) | Cod sursa (job #48771) | Cod sursa (job #3280847) | Cod sursa (job #2283911) | Cod sursa (job #387802)
Cod sursa(job #387802)
#include<stdio.h>
int a[100000],best[100000],n,pos;
FILE*g=fopen("scmax.out","w");
void afis(int p)
{
if(p>=n)return;
if(best[p]==best[p-1])afis(p+1);
else
{fprintf(g,"%d ",a[p]);
afis(p+1);}
}
int dinamic()
{
best[n-1]=1;
int i,j,max,LM=0;
for(i=n-2;i>=0;--i)
{
max=0;
for(j=i+1;j<n;++j)
if(best[j]>max&&a[i]<a[j])
{
max=best[j];
best[i]=max+1;
if(LM<best[i]){LM=best[i];pos=i;}
}
}
return LM;
}
int main()
{
FILE*f=fopen("scmax.in","r");
fscanf(f,"%d ",&n);
int i;
for(i=0;i<n;++i)
fscanf(f,"%d",&a[i]);
fclose(f);
fprintf(g,"%d\n",dinamic());
afis(pos);
fclose(g);
}