Cod sursa(job #538905)
| Utilizator | Data | 22 februarie 2011 01:55:05 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include <fstream.h>
#define N 5000001
ifstream fin("deque.in");
ofstream fout("deque.out");
int n,k,s[N],deque[N],first,last;
long long sum=0;
int main(){
int i,j;
fin>>n>>k;
for (i=1; i<=n; i++)
fin>>s[i];
first = 1;
last = 0;
for (i=1; i<=n; i++){
while ( first <= last && s[deque[last]] >= s[i]) last--;
deque[++last] = i;
if (deque[first] == i-k)
first++;
if (i >= k ) sum+= s[deque[first]];
}
fout<<sum;;
return 0;
}