Cod sursa(job #923537)
#include <fstream>
#include <deque>
using namespace std;
deque<int> v;
long long int vec[5000005];
int main()
{
ifstream fin("deque.in");
ofstream fout("deque.out");
int n,k,i;
fin>>n>>k;
long long int sum=0;
for(i=0;i<n;i++)
{
fin>>vec[i];
//se sterge
while(!v.empty())
if(v.front()+k<=i)
v.pop_front();
else
break;
while(!v.empty())
if(vec[v.back()]>vec[i])
{
v.pop_back();
}
else
break;
v.push_back(i);
//se actualizeaza suma
if(i>=k-1)
sum+=vec[v.front()];
}
fout<<sum<<'\n';
fin.close();
fout.close();
//system("PAUSE");
return 0;
}