Pagini recente » Cod sursa (job #603271) | Cod sursa (job #2815461) | Cod sursa (job #1575163) | Cod sursa (job #1283205) | Cod sursa (job #2483301)
#include <bits/stdc++.h>
using namespace std;
int dp[50005];
ifstream in("secv2.in");
ofstream out("secv2.out");
int main() {
int a[50005], n, mx = -2e9, r, k;
in >> n >> k;
dp[0] = -2e9;
for (int i = 1; i <= n; i++) {
in >> a[i];
dp[i] = max(dp[i - 1] + a[i], a[i]);
if (dp[i] > mx) {
mx = dp[i];
r = i;
}
}
int l = r;
while(a[l] != dp[l]) l--;
int ll = l;
while(a[ll - 1] == dp[l]) ll--;
l = ll;
while (r - l + 1 < k) {
int dr = -2e9, st = -2e9;
if (r < n) {
dr = a[r + 1];
}
if (l > 1) {
st = a[l - 1];
}
if (st > dr) {
mx += a[--l];
}
else {
mx += a[++r];
}
}
out << l << " " << r << " " << mx;
return 0;
}