Pagini recente » Cod sursa (job #1702772) | Cod sursa (job #1900818) | Cod sursa (job #1999277) | Cod sursa (job #416727) | Cod sursa (job #944337)
Cod sursa(job #944337)
#include<cstdio>
#include<deque>
#define NMAX 5000000
using namespace std;
long long res;
struct TYPE { int nr,ind; };
deque <TYPE> q;
TYPE make (int a, int b)
{
TYPE res;
res.nr=a;
res.ind=b;
return res;
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int n,k,i,val;
TYPE aux;
scanf("%d%d",&n,&k);
for(i=1;i<=k;i++)
{
scanf("%d",&val);
aux=make(val,i);
while(!q.empty() && q.back().nr>=val)
q.pop_back();
q.push_back(aux);
}
res=(long long)q.front().nr;
for(i=k+1;i<=n;i++)
{
scanf("%d",&val);
aux=make(val,i);
while(!q.empty() && q.back().nr>=val)
q.pop_back();
q.push_back(aux);
while(!q.empty() && q.front().ind<=i-k)
q.pop_front();
res+=(long long)q.front().nr;
}
printf("%lld\n",res);
return 0;
}