Pagini recente » Cod sursa (job #101908) | Cod sursa (job #208694) | Cod sursa (job #1899621) | Cod sursa (job #2721494) | Cod sursa (job #2974603)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
const int Ncoada = 1e6 * 5 + 5;
int deck[Ncoada], v[Ncoada];
int ans, st, dr = 1;
void pushb(int x)
{
dr = (dr + 1) % Ncoada;
deck[dr] = x;
}
void popb()
{
dr = (dr - 1) % Ncoada;
}
void popfront()
{
st = (st + 1) % Ncoada;
}
int main()
{
int n, k;
fin >> n >> k;
for(int i = 1; i <= n; i++)
{
fin >> v[i];
while(st <= dr && v[deck[dr]] >= v[i])
popb();
pushb(i);
if(deck[st] == i - k)
popfront();
if(i >= k)
ans += v[deck[st]];
}
fout << ans;
return 0;
}