Pagini recente » Cod sursa (job #508030) | Cod sursa (job #2631339) | Cod sursa (job #1533813) | Cod sursa (job #824316) | Cod sursa (job #17159)
Cod sursa(job #17159)
#include<stdio.h>
const int maxn = 10000;
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]);
}
min=10000;
for(i=1;i<=n;i++)
{
if (a[i]<min)
{
min=a[i];
poz=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) 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;
}
printf("%d\n",le[poz]);
while(poz)
{
printf("%d ",poz);
poz=la[poz];
}
return 0;
}