Pagini recente » Cod sursa (job #2318417) | Cod sursa (job #1824300) | Cod sursa (job #911019) | Cod sursa (job #1278325) | Cod sursa (job #1443005)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef long long int int64;
#include <deque>
using namespace std;
#define IN_FILE_NAME "deque.in"
#define OUT_FILE_NAME "deque.out"
int main()
{
FILE *pFin, *pFout;
pFin = fopen(IN_FILE_NAME, "r");
pFout = fopen(OUT_FILE_NAME, "w");
int n,k;
fscanf(pFin, "%d %d", &n, &k);
int *arr = new int[n];
int i;
for(i=0; i<n; i++)
{
int nr;
fscanf(pFin, "%d", &nr);
arr[i] = nr;
}
deque<int> Q = deque<int>();
for(i=0; i<k; i++)
{
int nr = arr[i];
while(!Q.empty() && arr[Q.back()] > nr)
{
Q.pop_back();
}
Q.push_back(i);
}
int64 sum = 0;
for(i=0; i<=n-k; i++)
{
int idx = Q.front();
sum += arr[idx];
if(idx <= i)
Q.pop_front();
if(i < n-k)
{
int nr = arr[i+k];
while(!Q.empty() && arr[Q.back()] > nr)
{
Q.pop_back();
}
Q.push_back(i+k);
}
}
Q.clear();
fprintf(pFout, "%lld\n", sum);
fclose(pFin);
fclose(pFout);
return 0;
}