Cod sursa(job #628757)
Utilizator | Data | 2 noiembrie 2011 01:13:22 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.62 kb |
#include<stdio.h>
#include<deque>
using namespace std;
int lista_smen[5000005];
int poz[5000005];
int n,k;
int main(){
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d", &n);
scanf("%d", &k);
long long s=0;
int x;
int inc=0;
int sf=0;
for(int i=1;i<=n;i++){
scanf("%d", &x);
while(x<=lista_smen[sf]&&sf>=inc){
sf--;
}
sf++;
lista_smen[sf]=x;
poz[sf]=i;
if(i-poz[inc]==k){
inc++;
}
if(i>=k){
s=s+lista_smen[inc];
}
}
printf("%lld", s);
return 0;
}