Pagini recente » Cod sursa (job #3265780) | Cod sursa (job #2839969) | Cod sursa (job #1645370) | Cod sursa (job #756176) | Cod sursa (job #17184)
Cod sursa(job #17184)
#include<stdio.h>
const int maxn = 10001;
int a[maxn];
int i;
int n;
int min;
int la[maxn];
int le[maxn];
int poz;
int j;
int main()
{
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(j=n;j>=1;j--)
{
le[j]=10000;
la[j]=0;
min=10000;
for(i=j+1;i<=n;i++)
{
if (a[i]<min&&a[i]>=a[j]) min=a[i];
if (min==a[i]&&a[i]>=a[j]&&(le[i]+1<le[j]||(le[i]+1==le[j]&&a[la[j]]>a[i])))
{
le[j]=le[i]+1;
la[j]=i;
}
}
if (le[j]==10000) le[j]=1;
}
min=10000;
int min1=10000;
poz=10000;
for(i=1;i<=n;i++)
{
if (a[i]<min1) min1=a[i];
if (a[i]==min1&&(le[i]<min||(a[poz]>a[i]&&le[i]==min)))
{
min=le[i];
poz=i;
}
}
printf("%d\n",le[poz]);
while(poz)
{
printf("%d ",poz);
poz=la[poz];
}
return 0;
}