Pagini recente » Cod sursa (job #291461) | Cod sursa (job #393240) | Cod sursa (job #1031665) | Cod sursa (job #2463684) | Cod sursa (job #941177)
Cod sursa(job #941177)
#include <cstdio>
#define NMAX 100001
int V[NMAX];
int L[NMAX];
int n,Lmax,k,maxim;
char cc[200002];
inline void citesc(){
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
fgets(cc,200002,stdin);
int ii=0;
while(cc[ii]!='\n')
if(cc[ii] != ' ')
V[++k] = cc[ii++] -'0';
}
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;
}