Pagini recente » Cod sursa (job #1566145) | Cod sursa (job #1184741) | Cod sursa (job #1293124) | Cod sursa (job #3219104) | Cod sursa (job #1254147)
#include<fstream>
#include<deque>
#define NMAX 5000010
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int n, k, p, u, a[NMAX];
long long sumaMinime=0;
deque<int> dq;
void adaugaSpate(int valoare, int pozitie)
{
while (!dq.empty() && a[dq.back()]>=valoare) dq.pop_back();
dq.push_back(pozitie);
}
void eliminaFata(int pozitie)
{
if (pozitie-dq.front()==k) dq.pop_front();
}
int main()
{
f>>n>>k>>a[1];
dq.push_back(1);
for (int i=2; i<=n; ++i)
{
f>>a[i];
eliminaFata(i);
adaugaSpate(a[i], i);
if (i>=k) sumaMinime+=a[dq.front()];
}
g<<sumaMinime<<"\n";
return 0;
}