Pagini recente » Cod sursa (job #2640087) | Cod sursa (job #628306) | Cod sursa (job #2616438) | Cod sursa (job #2649024) | Cod sursa (job #941182)
Cod sursa(job #941182)
#include <cstdio>
#define NMAX 100001
int V[NMAX];
int L[NMAX];
int n,Lmax,k,maxim;
inline void citesc(){
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(register int i=1;i<=n;++i)
scanf("%d",&V[i]);
}
inline void solve(){
L[n] = 1;
for(register int i=n-1;i>0;--i){
maxim = 0;
for(register int j=i+1;j<=n;++j){
if(L[j] > maxim && L[i] <= L[j])
maxim = L[j];
}
L[i] = maxim+1;
if(L[i] > Lmax)
Lmax = L[i];
}
}
inline void Drum(){
int p=1,t=0;
printf("%d\n",Lmax);
do{
while(L[p]!=Lmax || V[t] >= V[p])
++p;
printf("%d ",V[p]);
t = p;
Lmax--;
}while(Lmax);
}
int main(){
citesc();
solve();
Drum();
return 0;
}