Pagini recente » Cod sursa (job #887815) | Cod sursa (job #2159687) | Cod sursa (job #615775) | Cod sursa (job #1482478) | Cod sursa (job #574978)
Cod sursa(job #574978)
#include <stdio.h>
#include <deque>
using namespace std;
FILE *f=fopen ("deque.in", "r");
FILE *g=fopen ("deque.out", "w");
int v[5000001],i,n,k;
long long S;
deque <int> dq;
void eliminare() {
int x=i-k+1;
while ( x>0 && dq[0]<x )
dq.pop_front();
}
void adaugare(int x) {
while (!dq.empty() && x<v[dq.back()] )
dq.pop_back();
dq.push_back(i);
}
int main() {
fscanf (f, "%d%d", &n,&k);
for (i=1;i<=n;i++)
{
fscanf (f, "%d", &v[i]);
eliminare();
adaugare(v[i]);
if (i>=k)
S+=v[dq.front()];
}
fprintf (g, "%lld", S);
return 0;
}