Pagini recente » Cod sursa (job #1669035) | Cod sursa (job #2411829) | Cod sursa (job #2616054) | Borderou de evaluare (job #1036777) | Cod sursa (job #1732682)
#include <fstream>
using namespace std;
ifstream fin("secv2.in");
ofstream fout("secv2.out");
const int MAXN = 50005;
const int INF = 0x3f3f3f3f;
int a[MAXN];
int sum[MAXN];
int N, K;
int D[MAXN];
int t[MAXN];
int maxim = -INF, pi, pf;
void Read();
void Solve();
int main()
{
Read();
Solve();
fin.close();
fout.close();
return 0;
}
void Read()
{
int i, x;
fin >> N >> K;
for ( i = 1; i <= N; i++ )
{
fin >> a[i];
sum[i] = sum[i - 1] + a[i];
}
}
void Solve()
{
int i;
D[K] = sum[K];
t[K] = 1;
for ( i = K + 1; i <= N; i++ )
if ( D[i - 1] + a[i] >= sum[i] - sum[i - K] )
D[i] = D[i - 1] + a[i], t[i] = t[i - 1];
else
D[i] = sum[i] - sum[i - K], t[i] = i - K + 1;
for ( i = K; i <= N; i++ )
if ( D[i] > maxim )
maxim = D[i], pi = t[i], pf = i;
fout << pi << ' ' << pf << ' ' << maxim << '\n';
}