Pagini recente » Cod sursa (job #662862) | Cod sursa (job #1238213) | Cod sursa (job #2543180) | Cod sursa (job #2490757) | Cod sursa (job #3310416)
#include <bits/stdc++.h>
using namespace std;
using int64 = long long;
const int N_MAX = 6e6;
const int64 myINF = 3e9;
int v[1 + N_MAX],sum[N_MAX+1],min_sum[N_MAX+1],ind_sum[N_MAX+1];
ifstream fin ("secv2.in");
ofstream fout ("secv2.out");
int main()
{
int n,k;
fin >> n >> k;
for (int i = 1; i <= n; i ++)
fin >> v[i];
for(int i=1;i<=n;i++){
sum[i]=sum[i-1]+v[i];
}
for(int i=1;i<=n;i++){
min_sum[i]=min(min_sum[i-1],sum[i]);
if(sum[i]<min_sum[i-1])
ind_sum[i]=i;
else
ind_sum[i]=ind_sum[i-1];
}
int j = 1;
int64 answer = -myINF; int left, right;
for (int i = k; i <= n; i ++) {
int64 candidate = sum[i] - min_sum[i-k];
j=ind_sum[i-k];
if (candidate > answer) {
answer = candidate;
left = j;
right = i;
}
else if (candidate == answer && j < left) {
left = j;
right = i;
}
}
fout << left << " " << right << " " << answer << " ";
return 0;
}