Pagini recente » Monitorul de evaluare | Cod sursa (job #1186367) | Cod sursa (job #1091864) | Cod sursa (job #1802495) | Cod sursa (job #1112246)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
struct numar {
int val, poz;
};
numar x;
int i, n, k, nr, s;
int main() {
deque<numar> mydeque;
fin >> n >> k;
for(i = 1;i <= n;i++) {
fin >> nr;
while(!mydeque.empty() && mydeque.front().poz < i - k + 1) {
mydeque.pop_front();
}
while(!mydeque.empty() && mydeque.back().val > nr) {
mydeque.pop_back();
}
x.val = nr;
x.poz = i;
mydeque.push_back(x);
if(i >= k) s += mydeque.front().val;
}
fout << s << '\n';
fin.close();
fout.close();
return 0;
}