Pagini recente » Cod sursa (job #780523) | Cod sursa (job #514187) | Borderou de evaluare (job #371127) | Cod sursa (job #1839961) | Cod sursa (job #1013311)
#include <cstdio>
#include <deque>
#include <algorithm>
using namespace std;
deque <int> DQ;
int N,K,v[ 5000005 ];
long long ans;
void scan(int &A)
{
char c = 0; A = 0;
int flag = 1;
do
{
c = fgetc(stdin);
if(('0'<=c && c <= '9') || c == '-')
if( c =='-') flag = -1;
else A = A * 10 + c - 48;
}while(('0'<=c && c <= '9')||c=='-');
A = A * flag;
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int a;
scan(N),scan(K);
for(int i = 1; i <= N;++i)
{
scan(v[i]);
while(!DQ.empty() && v[i] <= v[DQ.back()]) DQ.pop_back();
DQ.push_back(i);
if(i - DQ.front() >= K) DQ.pop_front();
if(i>=K)ans += v[DQ.front()];
}
printf("%lld",ans);
return 0;
}