Pagini recente » Cod sursa (job #1832199) | Cod sursa (job #1021799) | Cod sursa (job #2220628) | Cod sursa (job #709790) | Cod sursa (job #3351234)
/*
Inteleg problema
1. Aleg directie (dp / graf / greedy / etc.)
2. GANDESC 20-30 MIN (exemple mici, brute force, pattern) (NU abandonez rapid)
3. Blocat => identific exact unde
4. Vad DOAR ideea (fara cod) => trebuie sa poti explica tot
5. Implementez SINGUR pseudocod -> cod, nu te poti bloca
6. daca esti prost codul (te uiti, inchizi, rescrii din memorie)
7. Refac problema fara ajutor peste *ceva* timp
NU copia cod
NU sari peste gandire
Blocajul = progres
*/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int n,k;
int v[5000005];
ifstream f ("deque.in");
ofstream g ("deque.out");
int main(){
f >> n >> k;
for(int i = 0; i < n; i++)
f >> v[i];
deque<int> d;
ll s = 0;;
for(int i = 0; i < n; i++){
while(!d.empty() && d.front() < i - k +1)
d.pop_front();
while(!d.empty() && v[d.back()] > v[i])
d.pop_back();
d.push_back(i);
if(i >= k -1)
s+= v[d.front()];
}
g << s;
return 0;
}