Pagini recente » Cod sursa (job #1261230) | Monitorul de evaluare | Cod sursa (job #750875) | Cod sursa (job #1199592) | Cod sursa (job #3325290)
#include <stdio.h>
#include <stdlib.h>
#define MAXK 5000000
int deq[MAXK];
int v[MAXK];
int p,u;
static inline void pop_u(){
u = (u-1 + MAXK) % MAXK;
}
static inline void pop_p(){
p = (p+1) % MAXK;
}
int main()
{
FILE*fin;
FILE*fout;
fin = fopen("deque.in","r");
fout = fopen("deque.out","w");
int n,i,k;
long long s;
fscanf(fin,"%d%d",&n,&k);
for(i = 0, s = 0; i < n; i++){
if(i >= k){
s += deq[p] * 1LL;
if(deq[p] == v[i-k])
pop_p();
}
fscanf(fin,"%d",&v[i]);
while(u != p && deq[u-1] > v[i])
pop_u();
deq[u] = v[i];
u = (u + 1) % MAXK;
}
s += deq[p] * 1LL;
fprintf(fout,"%lld",s);
return 0;
}