Pagini recente » Cod sursa (job #944927) | Statistici Ilie Filip Tudor (filie) | Cod sursa (job #2066265) | Cod sursa (job #1402514) | Cod sursa (job #168819)
Cod sursa(job #168819)
#include <stdio.h>
#define inf 1000000000
long n,i,j,a[5005],l[5005],t[5005],min,max;
long mark[5005],p,lmin,valmin;
int main(){
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
scanf("%ld",&n);
for (i=1;i<=n;i++)
scanf("%ld",&a[i]);
l[n]=1;
t[n]=0;
for (i=n-1;i;i--){
//
min=inf;
p=0;
for (j=i+1;j<=n;j++)
if (a[j]>=a[i]){
if (a[j]<min){min=a[j];p=j;lmin=l[j];}
else if (a[j]==min){
if (l[j]<=lmin){lmin=l[j];p=j;valmin=a[j];}
else if (l[j]==lmin)
if (a[j]<valmin){valmin=a[j];p=j;}
}
mark[j]=1;
}
if (p){
l[i]=lmin+1;t[i]=p;
}
else {t[i]=0;l[i]=1;}
}
for (i=1;i<=n;i++)
printf("%ld ",l[i]);
printf("\n");
min=n+1;
for (i=1;i<=n;i++)
if (!mark[i])
if (l[i]<min){min=l[i];p=i;}
printf("%ld\n",min);
while (p){
printf("%ld ",p);
p=t[p];
}
printf("\n");
return 0;
}