Pagini recente » Cod sursa (job #1275513) | Cod sursa (job #2108335) | Cod sursa (job #2264693) | Cod sursa (job #2301821) | Cod sursa (job #2264930)
#include<fstream>
#include<deque>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
deque<long> minElem, pozElem;
int main(){
long n, m;
long ok, sum = 0, x;
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;
}