Pagini recente » Cod sursa (job #3031655) | Cod sursa (job #3279696) | Cod sursa (job #2711501) | Cod sursa (job #401923) | Cod sursa (job #3127207)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int n, k, s;
int deq[5000010], v[5000010];
int front=1, back=0;
int main()
{
f>>n>>k;
for (int i=1;i<=n;i++)
f>>v[i];
for (int i=1;i<=n;i++)
{ while (front<=back && v[i]<=v[deq[back]])
back--;
deq[++back]=i;
if (deq[front] == i-k) front++; // nu mai avem nevoie de ce e in fata cozii pt i+1
if (i>=k) // daca am trecut de lungimea subsecventei atunci putem adauga la suma deq[front]
s+=v[deq[front]];
}
g<<s<<'\n';
}