Pagini recente » Monitorul de evaluare | Cod sursa (job #1276091) | Istoria paginii runda/simulare_oji_2023_clasa_10_10_martie | Istoria paginii runda/prbd1/clasament | Cod sursa (job #1350247)
#include <cstdio>
using namespace std;
const int MAX_N = 5000000;
FILE *in, *out;
int dq[MAX_N+1], st, dr;
int v[MAX_N+1];
int main()
{
in = fopen("deque.in","r");
out = fopen("deque.out", "w");
int n, k;
int i;
long long sum = 0;
fscanf(in, "%d%d", &n, &k);
for(i = 1; i <= n; i++)
fscanf(in, "%d", &v[i]);
st = 1;
dr = 0;
for(i = 1; i <= n; i++)
{
while(st <= dr && v[dq[dr]] >= v[i]) dr--;
dq[++dr] = i;
if(dq[st] == i-k) st++;
if(i >= k) sum += v[dq[st]];
}
fprintf(out, "%lld", sum);
fclose(in);
fclose(out);
return 0;
}