Pagini recente » Cod sursa (job #2115325) | Cod sursa (job #3146436) | Cod sursa (job #605663) | Cod sursa (job #336630) | Cod sursa (job #558088)
Cod sursa(job #558088)
#include<stdio.h>
#define NMax 50001
int n,K,a[NMax],b[NMax],d,st,suma,s[NMax];
int max(int x,int y)
{if(x > y) return x;
else return y;
}
void Read()
{int maxlocal = -NMax,i;
FILE *f=fopen("secv2.in","r");
fscanf(f,"%d %d",&n,&K);
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&s[i]);
if(s[i] > maxlocal) maxlocal = s[i];
a[i] = maxlocal;
}
fclose(f);
}
void Solve(int k)
{int i;
b[k] = a[k-1] + s[k];
for(i=k+1;i<=n;i++)
b[i] = max(b[i-1],a[i-1]+s[i]);
for(i=1;i<=n;i++)
a[i] = b[i];
}
void Reverse()
{int aux,i;
for(i=1;i<=n/2;i++)
{
aux = s[i];
s[i] = s[n-i+1];
s[n-i+1] = aux;
}
}
void Refresh_a()
{int maxlocal=-NMax,i;
for(i=1;i<=n;i++)
if(s[i] > maxlocal) maxlocal = s[i];
a[i] = maxlocal;
}
void Print_file()
{
FILE *g=fopen("secv2.out","w");
fprintf(g,"%d %d %d\n",st,d,suma);
}
int main()
{int i;
Read();
for(i=2;i<=K;i++)
Solve(i);
suma = b[n];
for(i=n-1;i>=K;i--)
if(b[i]==b[n]) continue;
else {d = i+1; break;}
Reverse();
Refresh_a();
for(i=1;i<=K;i++)
Solve(i);
for(i=n-1;i>=K;i--)
if(b[i]==b[n]) continue;
else {st = n - i; break;}
Print_file();
return 0;
}