Pagini recente » Cod sursa (job #188761) | Cod sursa (job #317005) | Cod sursa (job #1272919) | Cod sursa (job #1294793) | Cod sursa (job #2320938)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
struct two{
long long val, poz;
};
deque <two> Q;
inline void Read(int &n, int &k, long long &sol) {
fin >> n >> k;
sol = 0;
long long x; two z;
fin >> x; Q.push_back({x, 1});
for (int i = 2; i <= n; i++) {
fin >> x;
z = Q.front();
if (i - z.poz + 1 > k) {
Q.pop_front();
}
z = Q.back();
while (z.val > x && !Q.empty()) {
Q.pop_back();
z = Q.back();
}
Q.push_back({x, i});
z = Q.front();
if (i >= k)
sol += z.val;
}
}
int main () {
int n, k; long long sol = 0;
Read(n, k, sol);
fout << sol << "\n";
fin.close(); fout.close(); return 0;
}