Pagini recente » Cod sursa (job #2230124) | Cod sursa (job #2456448) | Cod sursa (job #2109668) | Cod sursa (job #902263) | Cod sursa (job #2229729)
#include <iostream>
#include <deque>
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
deque <int> deck;
const int NMAX = 5000000;
int v[NMAX+2];
int main()
{
int n,k,sol=0;
in>>n>>k;
for(int i=1; i<=n; i++)
{
in>>v[i];
}
for(int i=1; i<k; i++)
{
while(deck.empty()!=1 && v[deck.back()]>=v[i])
{
deck.pop_back();
}
deck.push_back(i);
}
for(int i=k; i<=n; i++)
{
while(deck.empty()!=1 && i-k+1>deck.front())
deck.pop_front();
while(deck.empty()!=1 && v[i]<v[deck.back()])
deck.pop_back();
deck.push_back(i);
sol+=v[deck.front()];
}
out<<sol;
}