Pagini recente » Monitorul de evaluare | Cod sursa (job #750875) | Cod sursa (job #1199592) | Cod sursa (job #3325290) | Cod sursa (job #3325288)
#include <stdio.h>
#include <stdlib.h>
#define MAXK 5000000
int deq[MAXK];
int v[MAXK];
int r[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,s,i,k;
fscanf(fin,"%d%d",&n,&k);
for(i = 0, s = 0; i < n; i++){
if(i >= k){
s += deq[p];
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];
fprintf(fout,"%d",s);
return 0;
}