Cod sursa(job #1835387)
| Utilizator | Data | 26 decembrie 2016 19:39:46 | |
|---|---|---|---|
| Problema | Deque | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include <iostream>
#include <deque>
using namespace std;
int n, k;
deque<int> d;
int A[5000000];
int64_t suma = 0;
void adauga(int x){
while(!d.empty() && d.back() > x)
d.pop_back();
d.push_back(x);
}
int main(){
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
cin >> n >> k;
for(int i=0; i<n; i++)
cin >> A[i];
for(int i=0; i<k-1; i++)
adauga(A[i]);
for(int i=k-1; i<n; i++){
adauga(A[i]);
if(d.front() == A[i-k])
d.pop_front();
suma += d.front();
}
cout << suma;
return 0;
}
