Pagini recente » Cod sursa (job #2311969) | Cod sursa (job #2029981) | Cod sursa (job #3217751) | Cod sursa (job #2968363) | Cod sursa (job #2045000)
#include <deque>
#include <cstdio>
using namespace std;
pair<int, int> deq[5000010];
int b,f;
int dqsize()
{
return b - f;
}
int main()
{
int n,sol=0,k,i,nr;
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d%d",&n,&k);
scanf("%d",&nr);
deq[++b] = make_pair(1,nr);
for(int i =2;i <= k;i++)
{
scanf("%d",&nr);
while(dqsize() > 0 && deq[b].second > nr)
{
b--;
}
deq[++b] = make_pair(i,nr);
}
for(int i=k+1;i<=n;i++)
{
sol += deq[f].second;
if(i - deq[f].first >= k)
f++;
scanf("%d",&nr);
while(dqsize() > 0 && deq[b].second > nr)
{
b--;
}
deq[++b] = make_pair(i,nr);
}
printf("%d",sol);
}