Pagini recente » Cod sursa (job #18468) | Cod sursa (job #2881698) | Cod sursa (job #1147183) | Cod sursa (job #691044) | Cod sursa (job #552925)
Cod sursa(job #552925)
#include<cstdio>
using namespace std;
int n,i,j,S,maxim,V[100010],best[100010],pre[100010];
void read(),solve(),show(int);
int main()
{
read();
solve();
show(S);
return 0;
}
void read()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++){scanf("%d",&V[i]);best[i]=1;pre[i]=i;}
}
void solve()
{
best[1]=1;
for(i=2;i<=n;i++)
for(j=i;j;j--)
if(V[j]<V[i])
if(best[j]+1>best[i]){best[i]=best[j]+1;pre[i]=j;if(best[i]>maxim){S=i;maxim=best[i];}}
printf("%d\n",best[S]);
}
void show(int s)
{
if(pre[s]==s){printf("%d ",V[s]);return;}
show(pre[s]);
printf("%d ",V[s]);
}