Pagini recente » Cod sursa (job #1609828) | Cod sursa (job #1172790) | vendetta_dc1 | Cod sursa (job #750643) | Cod sursa (job #2642991)
#include <fstream>
#include <vector>
#define ll long long
using namespace std;
ifstream fin("secv2.in");
ofstream fout("secv2.out");
ll n, k;
vector<ll> sums;
int main() {
fin >> n >> k;
ll temp, lowest = 0, biggest = 0;
fin >> temp;
sums.emplace_back(temp);
for (ll i = 1; i < n; ++i) {
fin >> temp;
sums.emplace_back(sums[i - 1] + temp);
if (sums[i] < 0 && sums[i] < sums[lowest] && i < n - k)
lowest = i;
if (sums[lowest] < 0) {
if (sums[i] - sums[lowest] > sums[biggest] - sums[lowest] || biggest - lowest < k)
biggest = i;
} else {
if (sums[i] > sums[biggest] || biggest - lowest < k)
biggest = i;
}
}
if (sums[lowest] < 0) {
if (sums[biggest] < 0 && k == 1) {
int mx = sums[0], mxPos = 0;
for (int i = 1; i < sums.size(); ++i)
if (sums[i] - sums[i - 1] > mx) {
mx = sums[i] - sums[i - 1];
mxPos = i;
}
fout << mxPos + 1 << " " << mxPos + 1 << " " << mx;
} else
fout << lowest + 2 << " " << biggest + 1 << " " << sums[biggest] - sums[lowest];
} else
fout << 1 << " " << biggest + 1 << " " << sums[biggest];
}