Pagini recente » Cod sursa (job #54148) | Cod sursa (job #1596419) | Cod sursa (job #707350) | Cod sursa (job #3226490) | Cod sursa (job #2044382)
#include <cstdio>
#include <queue>
using namespace std;
FILE *fin=fopen("deque.in","r");
FILE *fout=fopen("deque.out","w");
struct el{
long long int val;
int poz;
};
deque <el> DQ;
int n, k;
long long int s;
int main()
{
el y;
long long int x;
fscanf(fin,"%d %d",&n,&k);
for (int i=1;i<=n;i++)
{
fscanf(fin,"%lld",&x);
y.val=x;
y.poz=i;
while (!DQ.empty())
{
if (DQ.back().val>=y.val)
DQ.pop_back();
else break;
}
DQ.push_back(y);
if (DQ.front().poz==i-k)
DQ.pop_front();
if (i>=k)
s+=DQ.front().val;
}
fprintf(fout,"%lld\n",s);
fclose(fin);
fclose(fout);
return 0;
}