Pagini recente » Cod sursa (job #1737585) | Cod sursa (job #1793598) | Diferente pentru implica-te/arhiva-educationala intre reviziile 120 si 121 | Cod sursa (job #2869739) | Cod sursa (job #2817853)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("secv2.in");
ofstream fout("secv2.out");
const int SIZE_N = 50001;
long long n, k, sp[SIZE_N];
int main() {
fin >> n >> k;
int ok = 1;
for (int i = 1, x; i <= n; ++i) {
fin >> x;
sp[i] = sp[i - 1] + x;
if (sp[i] < 0) {
ok = 0;
}
}
if (ok || n == k) {
fout << 1 << ' ' << n << ' ' << sp[n];
return 0;
}
long long begin = 1, end = k, valMin = 0, pos = 0, sum = sp[k];
for (int i = 1; i <= n; ++i) {
if (sp[i] - valMin > sum && i - pos >= k) {
sum = sp[i] - valMin;
begin = pos + 1;
end = i;
} else if (i >= k && sp[i] - sp[i - k - 1] > sum) {
sum = sp[i] - sp[i - k - 1];
begin = i - k;
end = i;
}
if (sp[i] < valMin ) {
valMin = sp[i], pos = i;
}
}
fout << begin << ' ' << end << ' ' << sum;
}