Cod sursa(job #1621509)
| Utilizator | Data | 29 februarie 2016 19:35:35 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.69 kb |
#include <stdio.h>
using namespace std;
#define ll long long unsigned
#define pb push_back
#define mp make_pair
int v[5000005],deq[5000005];
int main(){
int n,i,k,b,e;
ll sum = 0;
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d",&n,&k);
for(i = 1;i <= n;i++){
scanf("%d",&v[i]);
}
b = 1;
e = 0;
for(i = 1;i <= n;i++){
while(e >= b && v[i] <= v[deq[e]]){
e--;
}
deq[++e] = i;
if(i >= k){
if(deq[b] == i-k){
b++;
}
sum += v[deq[b]];
}
}
printf("%lld",sum);
return 0;
}
