Pagini recente » Cod sursa (job #2987221) | Cod sursa (job #2826125) | Cod sursa (job #415841) | Cod sursa (job #3129450) | Cod sursa (job #215721)
Cod sursa(job #215721)
#include<stdio.h>
int n,v2[5001],lm;
long v[5001];
void read ()
{
FILE *f=fopen("subsir2.in","r");
fscanf(f,"%d",&n);
int i;
for (i=1;i<=n;++i)
fscanf(f,"%ld",&v[i]);
fclose(f);
}
void solve ()
{
int i,j,max;
v2[n]=1;
for (i=n-1;i>=1;--i)
{
max=0;
for (j=i+1;j<=n;++j)
if (v2[j]>max&&v[j]>=v[i])
max=v2[j];
v2[i]=max+1;
if (lm<v2[i])
lm=v2[i];
}
}
void drum ()
{
FILE *f;
f=fopen("subsir2.out","w");
fprintf(f,"%d\n",lm);
int t=0,p=1,i,prec;
v[t]=1000000;
for (i=1;i<=n;++i)
if (v2[i]==lm&&v[t]>v[i])
t=i;
lm--;
fprintf(f,"%d ",t);
while (lm)
{
prec=0;
v[prec]=1000000;
for (i=t;i<=n;++i)
if (v2[i]==lm&&v[i]<v[prec])
prec=i;
fprintf(f,"%d ",prec);
--lm;
t=prec;
}
fclose(f);
}
int main ()
{
read ();
solve ();
drum ();
return 0;
}