Pagini recente » Cod sursa (job #2710303) | Cod sursa (job #2520067) | Cod sursa (job #2583947) | Cod sursa (job #973901) | Cod sursa (job #2887493)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
long long n, k, i, suma, x, dFront, dBack, dSize;
int main()
{
in >> n >> k;
pair<long long, long long> deq[2 * k];
dFront = k;
dBack = k + 1;
dSize = 0;
for(i = 1; i <= k; i++)
{
in>>x;
while(dSize > 0 && deq[dBack].first >= x)
{
dBack++;
dSize--;
}
dBack--;
dSize++;
deq[dBack] = make_pair(x, i);
}
suma = deq[dFront].first;
for(i = k + 1; i <= n; i++)
{
in>>x;
while(dSize > 0 && i - deq[dFront].second >= k)
{
dFront--;
dSize--;
}
while(dSize > 0 && deq[dBack].first >= x)
{
dBack++;
dSize--;
}
dBack--;
dSize++;
deq[dBack] = make_pair(x, i);
suma += deq[dFront].first;
}
out<<suma;
return 0;
}