Pagini recente » Cod sursa (job #1331894) | Cod sursa (job #1585658) | Cod sursa (job #1909323) | Cod sursa (job #2061295) | Cod sursa (job #1810152)
#include<iostream>
#include<fstream>
#include<deque>
#define NMax 5000005
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int N,K;
long long Sol;
int A[NMax],Min[NMax];
deque <int> D;
void Read()
{
fin>>N>>K;
Min[0] = 1<<30;
for(int i = 1 ; i <= N ; ++i)
{
fin>>A[i];
Min[i] = min(Min[i-1],A[i]);
}
}
void Solve()
{
for(int i = 1 ; i <= N ; ++i)
{
while(!D.empty() && A[i] <= A[D.back()])
D.pop_back();
D.push_back(i);
if(D.front() == i - K)
D.pop_front();
if(i >= K)
Sol += A[D.front()];
}
}
void Print()
{
fout<<Sol<<"\n";
}
int main()
{
Read();
Solve();
Print();
fin.close();
fout.close();
return 0;
}