Pagini recente » Cod sursa (job #1388619) | Cod sursa (job #2585257) | Cod sursa (job #365794) | Cod sursa (job #1518700) | Cod sursa (job #3124697)
#include <fstream>
#include <queue>
using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
deque<long long>dq;
long long v[5000002];
int main()
{
int n , k;
cin >> n >> k;
long long suma = 0;
for(int i = 1; i <= n; ++ i)
{
cin >> v[i];
while(dq.front() + k <= i && dq.empty() == false)
{
dq.pop_front();
}
if(dq.empty() == false)
{
if(v[dq.front()] > v[i])
{
dq.push_front(i);
}
else
{
if(v[dq.back()] <= v[i])
{
dq.push_back(i);
}
else
{
while(dq.empty() == false && v[dq.back()] > v[i])
{
dq.pop_back();
}
dq.push_back(i);
}
}
}
else
{
dq.push_front(i);
}
if(i >= k )
{
suma += v[dq.front()];
}
}
cout << suma;
return 0;
}