Pagini recente » Cod sursa (job #2880875) | Cod sursa (job #1292375) | Cod sursa (job #552906) | Cod sursa (job #1466837) | Cod sursa (job #1933529)
#include <cstdio>
#include <iostream>
#include <deque>
using namespace std;
long long n, m;
deque<long long> q;
long long numere[5000005];
void citire()
{
scanf("%lld %lld", &n, &m);
for(long long i = 0; i < n; i++)
{
scanf("%lld", &numere[i]);
}
}
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
citire();
long long x;
for(long long k = 0; k < m - 1; k++)
{
x = numere[k];
while(q.empty() == false)
{
if(numere[q.back()] > x)
{
q.pop_back();
}
else
{
q.push_back(k);
break;
}
}
if(q.empty() == true)
{
q.push_back(k);
}
}
long long suma = 0;
for(long long k = m - 1; k < n; k++)
{
x = numere[k];
if(k - q.front() >= m)
{
q.pop_front();
}
while(q.empty() == false)
{
if(numere[q.back()] > x)
{
q.pop_back();
}
else
{
q.push_back(k);
break;
}
}
if(q.empty() == true)
{
q.push_back(k);
}
suma += numere[q.front()];
}
printf("%lld\n", suma);
return 0;
}