Cod sursa(job #1159775)
Utilizator | Data | 29 martie 2014 21:01:30 | |
---|---|---|---|
Problema | Deque | Scor | 25 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.61 kb |
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
deque<int> deq;
int nums[5000001];
ifstream fin("deque.in");
ofstream fout("deque.out");
int n, k, S;
void read()
{
fin >> n;
fin >> k;
for(int i = 1; i <= n; i++)
{
fin >> nums[i];
while(!deq.empty() && nums[deq.back()] > nums[i])
{
deq.pop_back();
}
deq.push_back(i);
if(i - deq.front() == k)
deq.pop_front();
if(i >= k)
S += nums[deq.front()];
}
}
int main()
{
read();
fout << S;
}