Pagini recente » Cod sursa (job #760664) | Cod sursa (job #2986251) | Cod sursa (job #906739) | Cod sursa (job #526645) | Cod sursa (job #3324019)
#include <bits/stdc++.h>
using namespace std;
FILE *fin, *fout;
const int NMAX = 5'000'000, KMAX = 5'000'000;
int deq[KMAX], a[NMAX];
int rInt() {
int rez = 0, ch, p = 1;
while ( isspace( ch = fgetc( fin ) ) );
if ( ch == '-' ) {
p = -1;
ch = fgetc( fin );
}
do
rez = rez * 10 + ch - '0';
while ( isdigit( ch = fgetc( fin ) ) );
return rez * p;
}
int main() {
long long sum = 0;
int n, k, i, prim = 0, ultim = 0;
fin = fopen( "deque.in", "r" );
n = rInt(), k = rInt();
for ( i = 1; i <= n; i++ ) {
a[i] = rInt();
while ( ultim != prim && deq[ultim - 1] > a[i] )
ultim--;
deq[ultim++] = a[i];
if ( i >= k ) {
sum += deq[prim];
if ( deq[prim] == a[i - k + 1] )
prim++;
}
}
fclose( fin );
fout = fopen( "deque.out", "w" );
fprintf( fout, "%lld\n", sum );
fclose( fout );
return 0;
}