Pagini recente » Cod sursa (job #2602399) | Cod sursa (job #2699023) | Cod sursa (job #2460563) | Cod sursa (job #2378999) | Cod sursa (job #659082)
Cod sursa(job #659082)
#include<iostream>
#include<fstream>
#include<cstring>
#define lmax 5001
using namespace std;
ifstream f("subsir2.in",fstream::in);
ofstream g("subsir2.out",fstream::out);
int a[lmax];
short int p[lmax],pmaxim,n,lung[lmax];
long S[lmax],maxim;
void read()
{
short int i;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
}
void phd()
{
short int i,j;
for(i=1;i<=n;i++)
S[i]=i;
for(i=n-1;i>=1;i--)
for(j=i+1;j<=n;j++)
if(a[i]<a[j] && S[j]+i>=S[i])
{ lung[i]=lung[j]+1;
S[i]=S[j]+i;
p[i]=j;
if(S[i]>maxim)
maxim=S[i],pmaxim=i;
}
}
void arata(short int x)
{ g<<x<<" ";
if(p[x]>0)
arata(p[x]);
}
int main()
{
read();
phd();
g<<lung[pmaxim]+1<<"\n";
arata(pmaxim);
f.close();
g.close();
return 0;
}