Pagini recente » Cod sursa (job #1220278) | Cod sursa (job #2806941) | Cod sursa (job #2525340) | Cod sursa (job #519516) | Cod sursa (job #2887489)
#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 + 2];
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;
}