Pagini recente » Cod sursa (job #839155) | Cod sursa (job #2088719) | Cod sursa (job #1989915) | Cod sursa (job #2355970) | Cod sursa (job #1688896)
/*
#include <fstream>
#define maxn 5000010
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int n,k,a[maxn],Deque[maxn],Front,Back;
long long Sum;
int main()
{
fin>>n>>k;
for(int i=1;i<=n;i++)
fin>>a[i];
Front=1,Back=0;
for(int i=1;i<=n;i++)
{
while(Front<=Back && a[i]<=a[Deque[Back]])
Back--;
Deque[++Back]=i;
if(Deque[Front]==i-k)
Front++;
if(i>=k)
Sum+=a[Deque[Front]];
}
fout<<Sum;
return 0;
}
*/
#include <fstream>
#include <deque>
#define maxn 5000010
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int n,k,a[maxn];
long long sum;
deque <int> dq;
int main()
{
fin>>n>>k;
for(int i=1;i<=n;i++)
fin>>a[i];
for(int i=1;i<=n;i++)
{
while(dq.empty()==false && a[i]<=a[dq.back()])
dq.pop_back();
dq.push_back(i);
if(dq.front()==i-k)
dq.pop_front();
if(i>=k)
sum+=a[dq.front()];
}
fout<<sum;
return 0;
}