Pagini recente » Cod sursa (job #1688327) | Cod sursa (job #61435) | Cod sursa (job #2977368) | Cod sursa (job #697661) | Cod sursa (job #269679)
Cod sursa(job #269679)
#include<stdio.h>
int V[5001],L[5001],P[5001],n;
int main(){
freopen("subsir.in","rt",stdin);
freopen("subsir.out","wt",stdout);
scanf("%d",&n);int i,j,min;
for(i=1;i<=n;i++) scanf("%d",V+i);
L[n]=1;P[n]=n;
for(i=n-1;i>=1;i--){ min = 1000000;
for(j=i+1;j<=n;j++){
if(V[j]>=V[i] && V[j]<min){
min = V[j];
if(L[j]+1 >= L[i]) {
if(!P[i]){
L[i] = L[j]+1;
P[i]=j; }
else {
if(V[P[i]] > V[j]){
L[i]=L[j]+1;
P[i]=j;
}
}
}
}
if(!L[i]) { L[i]=1; P[i]=i; }
}
}
min=1000000;int poz;
for(i=1;i<=n;i++)if(min>V[i]){min=V[i];poz=i;}
min=poz;
printf("%d\n",L[min]);
// if(P[min]==min) printf("%d ",V[min]);
while(P[min]!=min){
printf("%d ",min);
min=P[min];
}
printf("%d ",min);
return 0;
}