Pagini recente » Cod sursa (job #2872647) | Cod sursa (job #1756806) | Cod sursa (job #2796167) | Cod sursa (job #671354) | Cod sursa (job #2465996)
//#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
deque <pair<int,int> > dq;
int v[5000005];
int main()
{
ifstream cin("deque.in");
ofstream cout("deque.out");
long long n,k,sum=0;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>v[i];
}
for(int i=1;i<=k;i++){
if(dq.empty()==false)
while(dq.back().first>v[i]){
dq.pop_back();
if(dq.empty()==true)
break;
}
dq.push_back(make_pair(v[i],i));
}
sum+=dq.front().first;
for(int i=k+1;i<=n;i++){
if(dq.empty()==false)
while(dq.front().second<=i-k){
dq.pop_front();
if(dq.empty()==true)
break;
}
if(dq.empty()==false)
while(dq.back().first>v[i]){
dq.pop_back();
if(dq.empty()==true)
break;
}
dq.push_back(make_pair(v[i],i));
sum+=dq.front().first;
}
cout<<sum;
return 0;
}