Pagini recente » Cod sursa (job #2936400) | Cod sursa (job #537163) | Cod sursa (job #253902) | Cod sursa (job #2772650) | Cod sursa (job #413277)
Cod sursa(job #413277)
#include <stdio.h>
#define VEC_MAX 100000
int main(int argc, char** argv){
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
int n, v[VEC_MAX],i, j,a[VEC_MAX], sub[VEC_MAX],maxl, maxg, lastg;
scanf("%d", &n);
for(i = 0; i < n; i++) scanf("%d", &v[i]);
a[0] = 1;
maxg = 1;
lastg = 0;
for(i = 1; i < n; i++){
a[i] = 0;
maxl = 0;
for(j = i - 1; j >= 0; j--){
if(a[j] > maxl && v[i] > v[j]){
maxl = a[j];
}
if(maxl > maxg) break;
}
a[i] = maxl + 1;
if(maxl > maxg){
lastg = i;
maxg = maxl + 1;
}
}
sub[0] = v[lastg];
j = 1;
maxl = maxg;
maxg--;
for(i = lastg - 1; i >= 0; i--){
if(v[i] < v[lastg] && a[i] == maxg){
sub[j] = v[i];
maxg--;
lastg = i;
j++;
}
}
printf("%d\n", maxl);
for(i = maxl - 1; i>=0; i--)
printf("%d ", sub[i]);
return 0;
}