Pagini recente » Cod sursa (job #1193749) | Cod sursa (job #2383358) | Cod sursa (job #274625) | Cod sursa (job #2883100) | Cod sursa (job #1098184)
#include <cstdio>
#include <deque>
using namespace std;
deque <int> D;
deque <int> P;
int main () {
FILE *f, *g;
f = fopen( "deque.in", "r" );
g = fopen( "deque.out", "w" );
int n, x, k;
long long sum = 0;
fscanf( f, "%d%d%d", &n, &k, &x );
D.push_back(x);
P.push_back(1);
if( k == 1 )
sum += x;
for( int i = 2 ; i <= n ; ++i ) {
fscanf( f, "%d", &x );
if( i - P.front() == k ) {
D.pop_front();
P.pop_front();
}
while( !D.empty() && x < D.back() ) {
D.pop_back();
P.pop_back();
}
D.push_back(x);
P.push_back(i);
if( i >= k ) {
sum += D.front();
printf( "%d ", D.front() );
}
}
fprintf( g, "%lld\n", sum );
fclose( f );
fclose( g );
return 0;
}