Pagini recente » Cod sursa (job #2543702) | Cod sursa (job #1220507) | Cod sursa (job #2583103) | Istoria paginii runda/seerj30 | Cod sursa (job #181262)
Cod sursa(job #181262)
#include <stdio.h>
#define INF 10000000
int main(){
int n,v[5001],i,j,p[5001],l[5001]={0},min,poz,lmax,pozmax;
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
l[n]=1;
for(i=n-1;i>=1;--i){
min=INF;
poz=0;
for(j=i+1;j<=n;j++)
if(v[j]>=v[i] && v[j]<=min && l[j]>=l[i]){
min=v[j];
poz=j;
l[i]=l[j];
}
p[i]=poz;
l[i]++;
if(l[i]>lmax){
lmax=l[i];
pozmax=i;
}
else if(l[i]==lmax)
if(v[i]<v[pozmax])
pozmax=i;
}
printf("%d\n",lmax);
while(lmax){
printf("%d ",pozmax);
lmax--;
pozmax=p[pozmax];
}
return 0;
}