Pagini recente » Cod sursa (job #2466716) | Cod sursa (job #697513) | Cod sursa (job #1215837) | Cod sursa (job #1250953) | Cod sursa (job #1442558)
#include <stdio.h>
#include <queue>
#include <vector>
#define NMAX 5000001
using namespace std;
int numere[NMAX];
typedef struct RESULT {
int position;
bool operator()(int i, int j) {
return numere[i] > numere[j];
}
} RESULT;
priority_queue<int, vector<int>, RESULT> minn;
int n, k;
long long ans;
int getMin(int first) {
int temp = minn.top();
while(temp < first) {
minn.pop();
temp = minn.top();
}
return temp;
}
int main() {
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d%d", &n, &k);
for(int i = 0; i < n; ++i) {
scanf("%d", &numere[i]);
if(i < k - 1) minn.push(i);
}
int first = 0, last = k - 1, minim;
while(last < n) {
minn.push(last);
minim = getMin(first);
ans += numere[minim];
++first;
++last;
}
printf("%lld", ans);
return 0;
}