Pagini recente » Cod sursa (job #1236962) | Cod sursa (job #119400) | Cod sursa (job #575813) | Cod sursa (job #558124) | Cod sursa (job #2033653)
#include <bits/stdc++.h>
#define in "deque.in"
#define out "deque.out"
using namespace std;
ifstream fin(in);
ofstream fout(out);
deque <int> q;
int a[5000003];
int n,k;
long long s;
void Citire()
{
int i;
fin >> n >> k;
for (i = 1; i <= n; i++)
fin >> a[i];
}
void Rezolvare()
{
int i;
int x;
/// prelucrez primele k elemente
for (i = 1; i <= k; i++)
{
x = a[i];
while (!q.empty() && a[q.back()] >= x)
q.pop_back();
q.push_back(i);
}
s += a[q.front()];
/// prelucrez restul elementelor
for (i = k+1; i <= n; i++)
{
x = a[i];
while (!q.empty() && a[q.back()] >= x)
q.pop_back();
q.push_back(i);
/// veriric daca elementul s-a invechit
if (i - q.front() >= k) q.pop_front();
s += a[q.front()];
}
fout << s << "\n";
}
int main()
{
Citire();
Rezolvare();
fin.close();
fout.close();
return 0;
}