Cod sursa(job #2124114)
| Utilizator | Data | 6 februarie 2018 21:51:01 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <iostream>
#include <fstream>
#define MAX 5000002
using namespace std;
int deq[MAX];
int v[MAX];
int main() {
ifstream in("deque.in");
ofstream out("deque.out");
int n;
int k;
in >> n;
in >> k;
long long sum = 0;
int top = 0;
int bottom = -1;
for(int i = 0; i < n; i ++) {
in >> v[i];
while(top <= bottom && v[ deq[bottom] ] >= v[i]) bottom--;
deq[++bottom] = i;
if(deq[top] <= i - k) {
top++;
}
if(i >= k - 1) {
sum += v[ deq[top] ];
}
}
out << sum ;
return 0;
}
