Pagini recente » Cod sursa (job #813902) | Cod sursa (job #2252835) | Cod sursa (job #2772435) | Cod sursa (job #674055) | Cod sursa (job #3125642)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f1("deque.in");
ofstream f2("deque.out");
int N,K;
f1 >> N >> K;
int A[N], S = 0, d[N], front = 0, back = 0;
for (int i = 0; i < N; i++)
{
f1 >> A[i];
/// Remove elements from the back of the deque that are greater than or equal to A[i]
while (back > front && A[d[back-1]] >= A[i])
{
back--;
}
/// Add current index to the back of the deque
d[back++] = i;
/// If the deque has K elements, remove the front element and add its value to the S
if (i >= K-1)
{
if (d[front] == i-K)
{
front++;
}
S += A[d[front]];
}
}
f2 << S;
f1.close();
f2.close();
return 0;
}