Pagini recente » Cod sursa (job #2579014) | Cod sursa (job #1455135) | Cod sursa (job #1115506) | Cod sursa (job #993786) | Cod sursa (job #793411)
Cod sursa(job #793411)
#include<fstream>
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
int maxi,poz,mini,sol,min1,i,j,n,a[5001],l[5001],p[5001],ok[5001];
int main()
{f>>n;
for(i=1;i<=n;++i)
{f>>a[i];
if(a[i]<min1)
{min1=a[i];
ok[i]=1;
}
}
sol=100000;
for(i=n;i;--i)
{mini=l[i]=100000;
p[i]=-1;
for(j=i+1;j<=n;++j)
{if(a[i]>a[j]) continue;
if(a[j]<mini&&(l[i]>l[j]+1||(l[i]==l[j]+1&&a[j]<a[p[i]])))
{l[i]=l[j]+1;
p[i]=j;
}
if(a[j]<mini)
mini=a[j];
}
if(l[i]==100000)
{l[i]=1;
p[i]=i;
}
if(ok[i]&&(sol>l[i]||sol==l[i]&&a[i]<a[poz]))
{poz=i;
sol=l[i];
}
}
g<<sol<<'\n';
while(1)
{g<<poz<<' ';
if(poz==p[poz])
break;
poz=p[poz];
}
g<<'\n';
return 0;
}