Pagini recente » Cod sursa (job #1078834) | Cod sursa (job #1441695) | Cod sursa (job #533870)
Cod sursa(job #533870)
// http://infoarena.ro/problema/deque
#include <fstream>
#include <vector>
#include <deque>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
vector<int> number;
deque<int> myDeque;
int main() {
int numbers,lenght;
int tmp;
long long sum = 0;
in >> numbers >> lenght;
number.reserve(lenght+1);
// pentru a evita indexarea de la zero
number.push_back(0);
for(int i=1;i<=numbers;++i) {
in >> tmp;
number.push_back(tmp);
}
for(int i=1;i<=numbers;++i) {
while(!myDeque.empty() && myDeque.front() <= myDeque.back() && number[i] <= number[myDeque.back()])
myDeque.pop_back();
myDeque.push_back(i);
if(myDeque.front() == i - lenght)
myDeque.pop_front();
if(i >= lenght)
sum += number[myDeque.front()];
}
out << sum;
in.close();
out.close();
return (0);
}