Pagini recente » Cod sursa (job #2542778) | Cod sursa (job #2625012) | Cod sursa (job #2408719) | Cod sursa (job #2093609) | Cod sursa (job #2619463)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("deque.in");
ofstream g ("deque.out");
deque <int> mini;
int n, k, sum, v[5000005];
int main()
{
f >> n >> k;
for (int i = 1; i <= n; i++)
{
f >> v[i];
while (!(mini.empty()) && v[i] < mini.back()) ///cat timp am elemente in mini si exista elemente mai mari decat v[i]
{
mini.pop_back(); ///elimin elementele
}
mini.push_back(v[i]);
if (i >= k) ///daca s a depasit distanta k
{
if (mini.front() == v[ i - k]) /// in cazul in care cel mai mic element din mini este la o distanta mai mare decat k
{
mini.pop_front(); ///il elimin din lista
}
sum += mini.front();
}
}
g<<sum;
return 0;
}