Pagini recente » Cod sursa (job #2639005) | Cod sursa (job #1606663) | Cod sursa (job #73231) | Cod sursa (job #1498757) | Cod sursa (job #2264937)
#include<fstream>
#include<deque>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
deque<long long> minElem, pozElem;
int main(){
long n, m;
long ok, x;
long long sum = 0;
f>>n>>m;
f>>x;
minElem.push_back(x);
pozElem.push_back(0);
for(long i = 1 ; i < m ; i++ ){
f>>x;
ok = 0;
while(!minElem.empty() && minElem.back() > x){
minElem.pop_back();
pozElem.pop_back();
}
minElem.push_back(x);
pozElem.push_back(i);
}
sum += minElem.front();
for(long i = m ; i < n ; i++){
f>>x;
ok = 0;
if(pozElem.front() <= i - m){
minElem.pop_front();
pozElem.pop_front();
}
while(!minElem.empty() && minElem.back() > x){
minElem.pop_back();
pozElem.pop_back();
ok = 1;
}
minElem.push_back(x);
pozElem.push_back(i);
sum += minElem.front();
}
g<<sum;
return 0;
}