Pagini recente » Cod sursa (job #693172) | Cod sursa (job #2748374) | Cod sursa (job #2524683) | Cod sursa (job #3032668) | 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;
}