Cod sursa(job #370477)
| Utilizator | Data | 1 decembrie 2009 13:23:28 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.45 kb |
#include <cstdio>
#include <deque>
int a[5000000];
int main(){
freopen("deque.in","rt",stdin);
freopen("deque.out","wt",stdout);
std::deque<int> x;
int i,n,k;
long long sum=0;
scanf("%d%d",&n,&k);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++){
while(!x.empty()&&a[i]<x.back())x.pop_back();
x.push_back(a[i]);
if(i>=k-1){
if(a[i-k]==x.front())
x.pop_front();
sum+=x.front();
}
}
printf("%lld",sum);
return 0;
}
