Pagini recente » Cod sursa (job #339940) | Istoria paginii utilizator/liviu12345 | Statistici Mariana Marquez Morales (MarianaMM) | Rating Cosolan Sorina (cosolan.s) | Cod sursa (job #2264749)
//
// main.cpp
// Deque
//
// Created by Darius Buhai on 20/10/2018.
// Copyright © 2018 Darius Buhai. All rights reserved.
//
#include <iostream>
#include <deque>
#include <fstream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int n, k, x, s;
deque<pair<int, int>> v;
/// tinem minte elementele in ordine crescatoare
/// Ex: 3 1 4 5 7 9 10 6 9
/// [3] -> [(1) 4 5]
/// [(1) 4 5 7]
/// [(4) 5 7 9 10]
/// [(5) 6]
/// [(6) 9]
/// rez: [1 1 4 5 6]
void rez_deque()
{
fin>>n>>k;
int last_added_pos = 0;
for(int i=0;i<n;i++){
fin>>x;
if(!v.empty() && x<v.back().second)
v.pop_back();
while(!v.empty() && v.front().second>x)
v.pop_front();
pair<int,int> xx(i,x);
v.push_front(xx);
if(v.front().first-last_added_pos>=k-1 || v.front().first-v.back().first>=k-1){
s+=v.back().second;
last_added_pos = i;
v.pop_back();
}
}
fout<<s;
}
int main() {
rez_deque();
return 0;
}