Pagini recente » Cod sursa (job #2432180) | Cod sursa (job #2915783) | Cod sursa (job #1026017) | Cod sursa (job #1743203) | Cod sursa (job #2205479)
#include <iostream>
#include <stdio.h>
#include <deque>
using namespace std;
struct elem{int val, poz;};
deque <elem> d;
int main() {
FILE *fin, *fout;
elem x;
int n, i, y, k, l, lgth, lg;
long long sum=0;
fin = fopen("deque.in", "r");
fout = fopen("deque.out", "w");
fscanf(fin,"%d%d", &n, &k);
for(i=1;i<=n;i++){
fscanf(fin,"%d", &l);
x.val=l;
x.poz=i;
if(i<=k)
{
while(!d.empty()&&d.back().val>x.val)
d.pop_back();
d.push_back(x);
if(i==k)
sum=d.front().val;
}
else
{
while(!d.empty()&&d.front().poz<i-k+1)
d.pop_front();
while(!d.empty()&&d.back().val>x.val)
d.pop_back();
d.push_back(x);
sum+=d.front().val;
}
}
fprintf(fout,"%lld", sum);
fclose(fin);
fclose(fout);
return 0;
}