Pagini recente » Cod sursa (job #1445956) | Cod sursa (job #1445668) | Borderou de evaluare (job #3123670) | Cod sursa (job #1331561) | Cod sursa (job #387807)
Cod sursa(job #387807)
#include<stdio.h>
int a[100000],best[100000],poz[100000],n,pos=n-1;
FILE*g=fopen("scmax.out","w");
void afis()
{
int i=pos;
do
{
fprintf(g,"%d ",a[i]);
i=poz[i];
}while(i!=-1);
}
int dinamic()
{
best[n-1]=1;
poz[n-1]=-1;
int i,j,max=1;
for(i=n-2;i>=0;--i)
{ best[i]=1;
poz[i]=-1;
for(j=i+1;j<n;++j)
if(best[i]<best[j]+1&&a[i]<a[j])
{
best[i]=best[j]+1;
poz[i]=j;
if(max<best[i]){max=best[i];pos=i;}
}
}
return max;
}
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();
fclose(g);
}