voidsolve( ){ cin >> n >> k; for( int i = 1; i <= n; ++ i ) cin >> a[i]; ll ans = inf;
for( int l = 1; l <= n - k + 1; ++ l ) { // k days ll dp0 = inf, dp1 = a[l]; for( int i = l + 1; i <= l + k - 1; ++ i ) { ll nxtdp0 = dp1; ll nxtdp1 = min( dp0, dp1 ) + a[i]; dp0 = nxtdp0; dp1 = nxtdp1; } ans = min( ans, dp1 );
// k + 1 days if( l + k <= n ) { int i = l + k; ll nxtdp0 = dp1; ll nxtdp1 = min( dp0, dp1 ) + a[i]; dp0 = nxtdp0; dp1 = nxtdp1; } ans = min( ans, dp1 ); }
Mat merge( const Mat &L, const Mat &R ){ Mat res; for( int i = 0; i < 2; ++ i ) { for( int j = 0; j < 2; ++ j ) for( int k = 0; k < 2; ++ k ) { if( R.m[i][k] == inf || L.m[k][j] == inf ) continue; res.m[i][j] = min( res.m[i][j], R.m[i][k] + L.m[k][j] ); } } return res; }
#define ls u << 1 #define rs u << 1 | 1
voidbuild( int u, int l, int r ){ if( l == r ) { tr[u].m[0][0] = inf; tr[u].m[0][1] = 0; tr[u].m[1][0] = a[l]; tr[u].m[1][1] = a[l]; return; } int mid = ( l + r ) >> 1; build( ls, l, mid ); build( rs, mid + 1, r ); tr[u] = merge( tr[ls], tr[rs] ); }
Mat query( int u, int l, int r, int ql, int qr ){ if( ql <= l && r <= qr ) return tr[u]; int mid = ( l + r ) >> 1; if( qr <= mid ) returnquery( ls, l, mid, ql, qr ); if( ql > mid ) returnquery( rs, mid + 1, r, ql, qr ); returnmerge( query( ls, l, mid, ql, qr ), query( rs, mid + 1, r, ql, qr ) ); }
voidsolve( ){ cin >> n >> k; for( int i = 1; i <= n; ++ i ) cin >> a[i];
build( 1, 1, n ); ll ans = inf;
int len = k; for( int l = 1; l <= n - len + 1; ++ l ) { int r = l + len - 1; if( r == l ) { ans = min( ans, a[l] ); continue; } if( r - l <= 1 ) { ans = min( ans, a[l] + a[r] ); continue; } Mat T = query( 1, 1, n, l + 1, r - 1 ); ll res = min( T.m[1][1], T.m[0][1] ) + a[l] + a[r]; ans = min( ans, res ); }
len = k + 1; for( int l = 1; l <= n - len + 1; ++ l ) { int r = l + len - 1; if( r == l ) { ans = min( ans, a[l] ); continue; } if( r - l <= 1 ) { ans = min( ans, a[l] + a[r] ); continue; } Mat T = query( 1, 1, n, l + 1, r - 1 ); ll res = min( T.m[1][1], T.m[0][1] ) + a[l] + a[r]; ans = min( ans, res ); }