Pagini recente » Cod sursa (job #506346) | Borderou de evaluare (job #2073377) | Cod sursa (job #2609127) | Borderou de evaluare (job #2212776) | Cod sursa (job #1494404)
#include <deque>
#include <fstream>
using namespace std;
ifstream fin ("deque.in");
ofstream fout ("deque.out");
int N, K;
long long ANS = 0;
deque< pair<int, int> > DQ;
int main () {
fin >> N >> K;
int X;
for (int i = 1; i <= K; i++) {
fin >> X;
while ( !DQ.empty () && X < DQ.back ().first) {
DQ.pop_back ();
}
DQ.push_back (make_pair (X, i));
if (DQ.front ().second <= i - K) {
DQ.pop_front ();
}
}
ANS += DQ.front ().first;
for (int i = K + 1; i <= N; i++) {
fin >> X;
while ( !DQ.empty () && X < DQ.back ().first) {
DQ.pop_back ();
}
DQ.push_back (make_pair (X, i));
if (DQ.front ().second <= i - K) {
DQ.pop_front ();
}
ANS += DQ.front ().first;
}
fout << ANS << '\n';
return 0;
}