Pagini recente » Borderou de evaluare (job #1008064) | Cod sursa (job #1478203) | Cod sursa (job #425784) | Cod sursa (job #518399) | Cod sursa (job #221861)
Cod sursa(job #221861)
#include<stdio.h>
#define N 100005
int n, v[N], lung[N], pred[N], contor=0;
void parcurg(){
for(int i=1; i<=n; ++i){
int max=0;
lung[i]=1;
pred[i]=1;
for(int j=1;j<i;++j)
if(v[j]<v[i]&&lung[j]>max){
max=lung[j];
pred[i]=j;
}
lung[i]=max+1;
}
}
int pozmax(){
int pmax=1;
for(int i=1; i<=n; ++i){
if(lung[i]>lung[pmax])
pmax=i;
}
return pmax;
}
void baga(int x)
{
contor++;
if(contor<=lung[pozmax()]){
baga(pred[x]);
printf("%d ", v[x]);
}
}
int main(){
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for(int i=1; i<=n;++i)
scanf("%d", &v[i]);
parcurg();
int a=pozmax();
printf("%d\n", lung[a]);
baga(a);
return 0;
}