Pagini recente » Cod sursa (job #1858811) | Cod sursa (job #504108) | Cod sursa (job #1679511) | Cod sursa (job #2701377) | Cod sursa (job #2532183)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 5000000
int v[NMAX+1], deque[NMAX+1];
int inceput,sfarsit;
void pop_front(){
inceput++;
}
void push_back(int x){
deque[sfarsit]=x;
sfarsit++;
}
void pop_back(){
sfarsit--;
}
char empty(){
return(inceput>sfarsit);
}
int main()
{
FILE *fin,*fout;
fin=fopen("deque.in","r");
fout=fopen("deque.out","w");
int n,k,i,S=0;
fscanf(fin,"%d%d",&n,&k);
for(i=1;i<=n;i++){
fscanf(fin,"%d",&v[i]);
}
for(i=1;i<=n;i++){
if(i>k)
S+=v[deque[inceput]];
if(deque[inceput]<=i-k){
pop_front();
}
while(!empty()&&v[i]<v[deque[sfarsit-1]]&&i!=1){
pop_back();
}
push_back(i);
}
S+=v[deque[inceput-1]];
fprintf(fout,"%d",S);
fclose(fin);
fclose(fout);
return 0;
}