Pagini recente » Atasamentele paginii Profil Piatra2007 | Cod sursa (job #963733) | Monitorul de evaluare | Atasamentele paginii Profil Regecampf | Cod sursa (job #978565)
Cod sursa(job #978565)
#include<stdio.h>
#include<deque>
#define NMAX 5000007
#define LL long long
using namespace std;
deque < int > Deq;
int n, k;
LL Sum;
int a[NMAX];
int main(){
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d", &n, &k);
for(int i = 1; i <= n ; ++ i)
scanf("%d", &a[i]);
for(int i = 1; i <= n; ++ i){
while(! Deq.empty() && a[Deq.back()] > a[i])
Deq.pop_back();
Deq.push_back(i);
if(Deq.front() == i - k)
Deq.pop_front();
if(i >= k && !Deq.empty())
Sum += (LL)a[Deq.front()];
}
printf("%lld", Sum);
return 0;
}