Cod sursa(job #1058631)
| Utilizator | Data | 15 decembrie 2013 18:35:54 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.49 kb |
#include<cstdio>
#define nmax 5000010
using namespace std;
int n,k,st,dr,i,a[nmax],D[nmax];
long long Sum;
int main()
{ freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d ",&n,&k);
for(i=1;i<=n;++i) scanf("%d ",&a[i]);
st=1; dr=0;
for(i=1;i<=n;++i)
{ while(st<=dr && a[i]<=a[D[dr]]) dr--;
D[++dr]=i;
if(D[st]==i-k) st++;
if(k<=i) Sum+=a[D[st]];
}
printf("%lld\n",Sum); return 0;
}
