Pagini recente » Cod sursa (job #289190) | Cod sursa (job #809907) | Cod sursa (job #1025601) | Cod sursa (job #1482426) | Cod sursa (job #531061)
Cod sursa(job #531061)
#include <fstream>
using namespace std;
#define NMAX 500001
int N, K, front = 1, back = 0, V[NMAX], DEQUE[NMAX];
ifstream f("deque.in");
ofstream g("deque.out");
inline bool isEmpty() { return front>back;}
inline int pop_back() { return DEQUE[back--];}
inline int pop_front() {return DEQUE[front++];}
void push_back(int val) { if (back<NMAX) DEQUE[++back] = val; }
int main() {
long long sum = 0;
f>>N>>K;
for (int i=1;i<=N;i++) {
f>>V[i];
}
for (int i=1;i<=N;i++) {
while (!isEmpty() && V[i] <= V[DEQUE[back]]) {
pop_back();
}
push_back(i);
if (DEQUE[front] == i-K) pop_front();
if (i>=K) sum+=V[DEQUE[front]];
}
g<<sum<<"\n";
f.close(); g.close();
return 0;
}