Pagini recente » Cod sursa (job #183917) | Cod sursa (job #279068) | Cod sursa (job #670530) | Cod sursa (job #1155044) | Cod sursa (job #113530)
Cod sursa(job #113530)
#include <stdio.h>
#define NMAX 5092
#define inf 1000099
long V[NMAX];
int T[NMAX], A[NMAX], mina, minai, n;
long min;
int main()
{
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
scanf("%d", &n);
int i,j;
for (i=1; i<=n; ++i)
scanf("%ld", V+i);
A[n]=1;T[n]=n;
for (i=n-1; i>=1; --i)
{
min=inf;
mina=inf;
for (j=i+1; j<=n; ++j)
if (V[j]>=V[i] && min>V[j])
{
min=V[j];
if (A[j]<mina)
{
mina=A[j];
minai=j;
}
else if (mina==A[j] && V[minai]>V[j])
minai=j;
}
if (mina==inf)
{
A[i]=1;
T[i]=i;
}
else
{
A[i]=mina+1;
T[i]=minai;
}
}
min=V[1];
for (i=1; i<=n; ++i)
if (min>V[i]) {min=[i];minai=i;}
printf("%d\n", A[minai]);
//printf("%ld ", minai);
i=minai;
while (T[i]!=i)
{
printf("%d ", i);
i=T[i];
}
printf("%d", i);
fclose(stdin);
fclose(stdout);
return 0;
}