Pagini recente » Cod sursa (job #1998211) | Cod sursa (job #124914) | Cod sursa (job #547868) | Cod sursa (job #2772968) | Cod sursa (job #15225)
Cod sursa(job #15225)
#include<cstdio>
#define dim 5005
int N, M, p, A[dim], T[dim];
long Min = 1000005, X[dim];
void read();
void dynamics();
void write();
int main()
{
read();
dynamics();
write();
return 0;
}
void read()
{
freopen("subsir2.in", "r", stdin);
scanf("%d", &N);
int i;
for(i=1; i<=N; ++i)
{
scanf("%ld", X+i);
if(X[i] < Min)
{
Min = X[i];
p = i;
}
}
fclose(stdin);
}
void dynamics()
{
int i, j;
A[N] = 1; T[N] = 0;
for(i=N-1; i; --i)
{
Min = 1000005;
for(j=i+1; j<=N; ++j)
if(X[j] >= X[i])
{
if(X[j] < Min)
{
Min = X[j];
A[i] = A[j]+1;
T[i] = j;
}
if(X[j] == Min && A[j]+1 < A[i])
{
A[i] = A[j]+1;
T[i] = j;
}
}
if(!A[i])
{
A[i] = 1;
T[i] = 0;
}
}
}
void write()
{
freopen("subsir2.out", "w", stdout);
printf("%d\n", A[p]);
while(p)
{
printf("%d ", p);
p = T[p];
}
fclose(stdout);
}