Cod sursa(job #932066)
Utilizator | Neagu Rares Florian thebest001 | Data | 28 martie 2013 18:08:19 |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.58 kb |
#include <stdio.h>
int deq[5000001];
int v[5000001];
int st=1;
int dr=0;
int n,k;
long long sum=0;
void stanga(int i){
if (i-deq[st]==k)
st++;
}
void dreapta(int i){
while (st<=dr && v[i]<=v[deq[dr]])
dr--;
}
int main(){
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d %d",&n,&k);
for (int i=1;i<=n;i++){
scanf("%d",&v[i]);
if (i>k)stanga(i);
dreapta(i);
deq[++dr]=i;
if (i>=k) sum+=v[deq[st]];
}
printf("%lld",sum);
return 0;
}