Pagini recente » Cod sursa (job #2704636) | Cod sursa (job #248204) | Cod sursa (job #547506) | Cod sursa (job #268647) | Cod sursa (job #2887491)
#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[n];
dFront = 2 * k;
dBack = 2 * 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;
}