Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/bogdan007 | tm | Diferente pentru problema/tigri intre reviziile 21 si 20 | Cod sursa (job #181036)
Cod sursa(job #181036)
#include <stdio.h>
#define N 100000
int re[N],v[N],l[N];
int main()
{
int i,j,maxsub=0,pmax=0,max,n;
freopen("scmax.in", "r",stdin);
freopen("scmax.out", "w",stdout);
scanf("%d", &n);
for(i=1;i<=n;++i)
{
scanf("%d", &v[i]);
re[i]=1;
}
l[n]=1;
for(i=n;i>=1;--i)
{
max=0;
for(j=i+1;j<=n;++j)
{
if(v[j]>v[i])
if(l[j]>max)
{
max=l[j];
re[i]=re[j];
}
else if(l[j]==max) re[i]=(re[i]+re[j])%9901;
}
++max;
l[i]=max;
if(max>maxsub) {maxsub=max; pmax=i; }
}
printf("%d\n", maxsub);
int b=0;
for(int i=pmax;i<=n;++i)
{
if(v[i]>b)
printf("%d ", v[i]);
b=v[i];
}
return 0;
}