Pagini recente » Cod sursa (job #757802) | Cod sursa (job #1806795) | Cod sursa (job #1048020) | Istoria paginii home | Cod sursa (job #1603735)
#include <cstdio>
#include<deque>
#define MAX 5000000
using namespace std;
deque<int>d1, d2;
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
int n, i, k, x;
long long s=0;
scanf("%d%d", &n, &k);
for(i=1;i<=k;i++)
{
scanf("%d", &x);
while(!(d1.empty())&&d1.back()>x)
{
d1.pop_back();
d2.pop_back();
}
d1.push_back(x);
d2.push_back(i);
}
s+=d1.front();
for(i=k+1;i<=n;i++)
{
scanf("%d", &x);
if(!d1.empty())
if(d2.front()<=i-k)
{
d2.pop_front();
d1.pop_front();
}
while(!(d1.empty())&&d1.back()>x)
{
d1.pop_back();
d2.pop_back();
}
d1.push_back(x);
d2.push_back(i);
s+=d1.front();
}
printf("%lld", s);
return 0;
}