Pagini recente » Cod sursa (job #52605) | Cod sursa (job #529274) | Cod sursa (job #1848999) | Cod sursa (job #1020371) | Cod sursa (job #1013310)
#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('1'<=c && c <= '9' || c == '-')
if( c =='-') flag = -1;
else A = A * 10 + c - 48;
}while('1'<=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;
}