Pagini recente » Clasament dupa rating | Diferente pentru utilizator/spiriflaviu intre reviziile 12 si 13 | Profil paunsilviu | Profil Andr3i | Cod sursa (job #496746)
Cod sursa(job #496746)
#include<stdio.h>
int v[100001], best[100001], maxt;
int main(){
freopen ("scmax.in", "r", stdin);
freopen ("scmax.out", "w", stdout);
int n, i, j;
scanf("%d ", &n);
best[n]=1;
for(i=1; i<=n; i++)
scanf("%d ", &v[i]);
for(i=n; i>=1; i--){
int max=0;
for(j=i+1; j<=n; j++){
if(v[i]<v[j])
if(best[j]>=max)
max=best[j];
}
best[i]=max+1;
if(best[i]>maxt)
maxt=best[i];
}
printf("%d\n", maxt);
for(i=1; maxt>0; i++)
if(best[i]==maxt){
printf("%d ", v[i]);
maxt--;
}
return 0;
}