Pagini recente » Cod sursa (job #838357) | Cod sursa (job #1694052) | Cod sursa (job #2744037) | Cod sursa (job #1087203) | Cod sursa (job #2264939)
#include<fstream>
#include<deque>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
deque<int> minElem, pozElem;
int main(){
int n, m;
int 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;
}