Pagini recente » Cod sursa (job #2334629) | Cod sursa (job #906683) | Cod sursa (job #1068020) | Cod sursa (job #2883539) | Cod sursa (job #2321550)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
struct two{
int val, poz;
};
deque <two> Q;
inline void Read(int &n, int &k, long long &sol) {
fin >> n >> k;
sol = 0;
int 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();
if (!Q.empty())
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;
}