Pagini recente » Cod sursa (job #1651322) | Cod sursa (job #2749342) | ss | Cod sursa (job #955186) | Cod sursa (job #1081963)
#include <cstdio>
#include <deque>
using namespace std;
const int NMAX = 5000005;
long long sum;
int N, K;
int array[NMAX];
deque< int > minimum;
void read() {
freopen( "deque.in", "r", stdin );
freopen( "deque.out", "w", stdout );
scanf("%i %i", &N, &K);
}
inline void add(int x) {
while( !minimum.empty() && minimum.back() > x )
minimum.pop_back();
minimum.push_back(x);
}
void readK() {
scanf("%i", &array[0]);
minimum.push_back(array[0]);
for(int i = 1; i < K; i++) {
scanf("%i", &array[i]);
while( !minimum.empty() && minimum.back() > array[i] )
minimum.pop_back();
minimum.push_back(array[i]);
}
sum = minimum.front();
}
void solve() {
readK();
for(int i = K; i < N; i++) {
if( minimum.front() == array[i - K] )
minimum.pop_front();
scanf("%i", &array[i]);
add(array[i]);
sum += minimum.front();
}
}
int main() {
read();
solve();
printf("%lld", sum);
return 0;
}