Pagini recente » Cod sursa (job #2039818) | Cod sursa (job #1362458) | Cod sursa (job #1336268) | Cod sursa (job #1511964) | Cod sursa (job #1901769)
#include <fstream>
using namespace std;
int n,i,j,minim,mini,v[5001],w[5001],s[5001];
bool p[5001];
int main()
{
ifstream f("subsir2.in");
ofstream g("subsir2.out");
f>>n;
for(i=1; i<=n; i++)
f>>v[i];
for(i=n-1; i>=1; i--)
{
minim=1000001;
for(j=i+1; j<=n; j++)
{
if(v[i]<=v[j])
{
p[j]=1;
if(v[j]<minim)
{
minim=v[j];
if(!s[i]) s[i]=j;
else if(w[j]<=w[s[i]]) s[i]=j;
}
}
}
if(s[i]) w[i]=w[s[i]]+1;
}
minim=5001;
for(i=1; i<=n; i++)
{
if(p[i]==0&&(w[i]<minim||(w[i]==minim&&v[i]<v[mini])))
{
mini=i;
minim=w[i];
}
}
g<<w[mini]+1<<"\n"<<mini<<" ";
while(s[mini])
{
mini=s[mini];
g<<mini<<" ";
}
f.close(); g.close();
return 0;
}