Pagini recente » Cod sursa (job #2894820) | Cod sursa (job #2327476) | Cod sursa (job #2854794) | Cod sursa (job #2869303) | Cod sursa (job #1708329)
#include <cstdio>
#define MAXN 5000
#define INF 1000000
int v[MAXN+2],d[MAXN+2],next[MAXN+2];
int main(){
FILE*fi,*fout;
int i,n,j,max,poz,min;
fi=fopen("subsir2.in" ,"r");
fout=fopen("subsir2.out" ,"w");
fscanf(fi,"%d" ,&n);
for(i=1;i<=n;i++)
fscanf(fi,"%d" ,&v[i]);
d[n]=1;
for(i=n-1;i>0;i--){
max=0;
min=INF;
for(j=i+1;j<=n;j++)
if(v[i]<v[j]){
if(max<d[j]){
max=d[j];
next[i]=j;
min=v[j];
}
else
if(max==d[j]&&min>v[j]){
min=v[j];
next[i]=j;
}
}
d[i]=max+1;
}
max=0;
for(i=1;i<=n;i++)
if(d[i]>max)
max=d[i];
min=INF;
for(i=1;i<=n;i++)
if(d[i]==max&&v[i]<min){
min=v[i];
poz=i;
}
fprintf(fout,"%d\n" ,max);
while(poz>0){
fprintf(fout,"%d " ,poz);
poz=next[poz];
}
fclose(fi);
fclose(fout);
return 0;
}