Pagini recente » Cod sursa (job #2207675) | Cod sursa (job #1425079) | Cod sursa (job #1609994) | Cod sursa (job #807079) | Cod sursa (job #1990451)
#include <iostream>
#include <fstream>
#include <list>
#include <utility>
int main() {
std::ifstream fileIn("deque.in");
std::ofstream fileOut("deque.out");
std::list<std::pair<int, int>> myQ;
int nV, nK;
fileIn >> nV >> nK;
long long sum(0);
int aux;
for (int i(1); i <= nV; i++) {
fileIn >> aux;
while (!myQ.empty() && myQ.front().first <= i - nK) {
myQ.pop_front();
}
while (!myQ.empty() && myQ.back().second >= aux) {
myQ.pop_back();
}
myQ.push_back(std::make_pair(i, aux));
if (i >= nK) {
sum += myQ.front().second;
}
}
fileOut << sum;
fileIn.close();
fileOut.close();
return 0;
}