Pagini recente » Cod sursa (job #952721) | Cod sursa (job #2456835) | Cod sursa (job #20371) | Cod sursa (job #354112) | Cod sursa (job #2607673)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
class deq {
int *A;
int i, j;
public:
deq(int nr_elem = 0): A(nr_elem ? new int[nr_elem] : nullptr), i(0), j(0) {};
~deq() {
}
void pop_back() {
j--;
}
void pop_front() {
i++;
}
int front() {
return A[i];
}
int back() {
return A[j - 1];
}
void push_back(int val) {
A[j++] = val;
}
int size() {
return j - i;
}
void afis() {
for(int k = i; k < j; k++)
cout << A[k] << " ";
cout << endl;
}
int get_min() {
int min = 0xFFFFFFF;
for(int k = i; k < j; k++)
if(A[k] < min)
min = A[k];
return min;
}
};
int main() {
int N, K, x,i=0;
long long int S = 0;
int min = 0xFFFFFFF;
in >> N >> K;
deq A(N);
for(i = 0; i < K; i++) {
in >> x;
if(x < min)
min = x;
A.push_back(x);
}
S += min;
for(i; i < N; i++) {
in >> x;
if(min == A.front()) {
A.pop_front();
A.push_back(x);
min = A.get_min();
S += min;
} else {
A.pop_front();
A.push_back(x);
if(x < min)
min = x;
S += min;
}
}
out << S;
return 0;
}