Pagini recente » Cod sursa (job #2569906) | Cod sursa (job #1071084) | Cod sursa (job #3158140) | Cod sursa (job #1656038) | Cod sursa (job #2175283)
#include <stdio.h>
#include <queue>
const int INF = -25000;
struct cell
{
int pos, value;
};
int main()
{
FILE *fin = fopen("secv2.in", "r"),
*fout = fopen("secv2.out", "w");
int n, k;
int sum;
int max;
std::queue<cell> Q;
int begin, end;
fscanf(fin, "%d %d ", &n, &k);
sum = 0;
max = INF;
for(int i = 1; i <= n; i++)
{
int x;
fscanf(fin, "%d", &x);
if(i < k)
Q.push({i, x}), sum += x;
else
{
while(!Q.empty() && i - Q.front().pos >= k && sum - Q.front().value < x)
{
sum -= Q.front().value;
Q.pop();
}
Q.push({i, x});
sum += x;
}
if(max < sum)
{
max = sum;
begin = Q.front().pos;
end = i;
}
}
fprintf(fout, "%d %d %d\n", begin, end, max);
fclose(fin);
fclose(fout);
return 0;
}