Pagini recente » Cod sursa (job #2473396) | Cod sursa (job #2765767) | Cod sursa (job #1382463) | Cod sursa (job #2813849) | Cod sursa (job #698050)
Cod sursa(job #698050)
#include<fstream>
using namespace std;
int i,j,n,m,a[5010],poz[5010],l[5010],min1,max1,pozitie;
int main()
{
FILE *f=fopen("subsir2.in","r");
FILE *g=fopen("subsir2.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;++i)
fscanf(f,"%d",&a[i]);
for(i=n;i>=1;--i)
{
min1=max1=1<<30;
for(j=i+1;j<=n;++j)
if(a[i]<=a[j]&&min1>a[j])
{
min1=a[j];
if(l[j]<=max1)
max1=l[j],pozitie=j;
}
if(min1==1<<30)
l[i]=1;
else
l[i]=l[pozitie]+1,poz[i]=pozitie;
}
min1=l[1];
pozitie=1;
j=a[1];
for(i=2;i<=n;++i)
if(a[i]<j)
{
if(min1>=l[i])
min1=l[i],pozitie=i;
j=a[i];
}
fprintf(g,"%d\n",min1);
while(min1)
{
--min1;
fprintf(g,"%d ",pozitie);
pozitie=poz[pozitie];
}
return 0;
}