Pagini recente » Profil byndrsn | Cod sursa (job #1552785) | Cod sursa (job #2017201) | Istoria paginii utilizator/kayhy2323 | Cod sursa (job #156506)
Cod sursa(job #156506)
#include<stdio.h>
#define maxn 5001
long v[maxn],t[maxn],rez[maxn];
int n,i,j,p;
long long s[maxn],max,max1;
FILE *f,*g;
int main()
{f=fopen("subsir2.in","r");
g=fopen("subsir2.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%ld",&v[i]);
for(i=n;i>0;i--)
{max=0;max1=0;
for(j=i+1;j<=n;j++)
if(v[i]<v[j] && max<=rez[j]&&max1<s[j])
{max=rez[j];p=j;}
rez[i]=max+1;
if(rez[p]==0)
t[i]=-1;
else
t[i]=p;
s[i]=s[j]+v[i];}
max=0;p=0;
for(i=1;i<=n;i++)
if(max<=rez[i]&&s[p]<s[i])
{max=rez[i];p=i;}
fprintf(g,"%lld\n",max);
while(p!=-1)
{fprintf(g,"%d ",p);
p=t[p];}
fclose(f);
fclose(g);
return 0;}