Pagini recente » Cod sursa (job #889303) | Cod sursa (job #2764915) | Cod sursa (job #2673464) | Cod sursa (job #1968828) | Cod sursa (job #950640)
Cod sursa(job #950640)
#include <fstream>
using namespace std;
ifstream fin ("subsir2.in");
ofstream fout ("subsir2.out");
int s[5001],v[5001],j,succ[5001],i,n;
bool pred[5001];
int main ()
{
fin>>n;
for (i=1;i<=n;i++) fin>>v[i];
succ[n]=0;
for (i=n-1;i>=1;i--)
{
for (j=i+1;j<=n;j++)
{
if (s[i]==0) {if(v[i]<=v[j]) {s[i]=j; pred[j]=1;}}
else if (v[i]<=v[j]) { pred[j]=1; if (v[j]<v[s[i]] && succ[j]<=succ[s[i]]) s[i]=j;}
}
if (s[i]) succ[i]=succ[s[i]]+1;
}
int minm=5001,mini;
for (i=1;i<=n;i++)
{
if (pred[i]==0) if (succ[i]<minm || (succ[i]==minm && v[i]<v[mini])) {mini=i; minm=succ[i];}
}
fout<<succ[mini]+1<<"\n"<<mini<<" ";
while (s[mini])
{
mini=s[mini];
fout<<mini<<" ";
}
}