Pagini recente » Cod sursa (job #520343) | Cod sursa (job #1951922) | Cod sursa (job #807485) | Cod sursa (job #122253) | Cod sursa (job #950450)
Cod sursa(job #950450)
#include <fstream>
using namespace std;
ifstream fin ("subsir2.in");
ofstream fout ("subsir2.out");
int s[5001],l,v[5002],n,i,ls,ld,m,ind[5001],j,succ[5001],current;
int main ()
{
fin>>n;
for (i=1;i<=n;i++) fin>>v[i];
succ[n]=0; v[5001]=1000000;
for (i=n-1;i>=1;i--)
{
current=5001;
for (j=i+1;j<=n;j++)
{
if (v[i]<=v[j]&&v[j]<v[current]&&succ[j]<=succ[current]) {current=j;}
}
succ[i]=succ[current]+1;
}
s[1]=v[1]; l=1; ind[1]=1;
for (i=2;i<=n;i++)
{
if (v[i]>=s[l]) {s[++l]=v[i]; ind[l]=i; continue;}
for (j=1;j<=l;j++)
{
if (v[i]<s[j]) break;
}
if (succ[i]<=succ[ind[j]])
{
s[j]=v[i];
l=j;
ind[l]=i;
}
}
fout<<l<<"\n";
for (i=1;i<=l;i++) fout<<ind[i]<<" ";
return 0;
}