Pagini recente » Cod sursa (job #3229251) | Cod sursa (job #186341) | Cod sursa (job #1941510) | Cod sursa (job #950182) | Cod sursa (job #517650)
Cod sursa(job #517650)
#include<stdio.h>
#include<deque>
using namespace std;
FILE *in=fopen("deque.in","r"),*out=fopen("deque.out","w");
struct ll{long long a;int b;};
deque<ll> D;
int main()
{
int i,N,K;
long long x,S=0;
ll george;
fscanf(in,"%d %d",&N,&K);
for(i=1;i<=N;++i)
{
fscanf(in,"%lld",&x);
if(!D.empty())
{
while(D.front().b<i+1-K)
D.pop_front();
while(D.back().a>x&&!D.empty())
D.pop_back();
}
george.a=x;
george.b=i;
D.push_back(george);
if(i>=K)
S+=D.front().a;
}
fprintf(out,"%lld\n",S);
fclose(in);
fclose(out);
return 0;
}