Pagini recente » Cod sursa (job #1953905) | Cod sursa (job #778161) | Cod sursa (job #2239140) | Cod sursa (job #1945028) | Cod sursa (job #3127252)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
ofstream g2("deque2.out");
long int n, k, s=0;
long int deq[5000001], v[5000001];
long 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';
f.close();
g.close();
return 0;
}