Pagini recente » Cod sursa (job #1330056) | Cod sursa (job #1101035) | Cod sursa (job #2571633) | Cod sursa (job #953749) | Cod sursa (job #85345)
Cod sursa(job #85345)
#include <stdio.h>
FILE * fin=fopen("subsir2.in","r");
FILE * fout=fopen("subsir2.out","w");
long a[5003];
int b[5003],c[5003];
int n,i,j,max,lmax,poz;
int main()
{
fscanf(fin,"%d",&n);
for (i=1;i<=n;i++)
fscanf(fin,"%ld",&a[i]);
fclose(fin);
lmax=0;
for (i=n;i>=1;i--)
{
max=0; c[i]=0;
for (j=i+1;j<=n;j++)
if (a[j]>=a[i])
if (b[j]>max) {max=b[j]; c[i]=j;} else
if (b[j]==max) if (a[c[i]]>a[j]) {c[i]=j;}
b[i]=1+max;
if (b[i]>lmax) {lmax=b[i]; poz=i;} else
if (b[i]==max&&a[i]<=a[poz]) poz=i;
}
fprintf(fout,"%d\n",lmax);
while (poz)
{
fprintf(fout,"%d ",poz);
poz=c[poz];
}
fclose(fout);
return 0;
}