(define (solve n k vx va) (let loop ([il (- k 1)] [ir (- k 1)] [rl (- (vector-ref vx (- k 1)) (vector-ref va (- k 1)))] [rr (+ (vector-ref vx (- k 1)) (vector-ref va (- k 1)))]) (let* ([nir (+ ir 1)] [nil (- il 1)] [rfir (and (> n nir) (>= rr (vector-ref vx nir)))] [lfir (and (<= 0 nil) (<= rl (vector-ref vx nil)))]) (cond [(and rfir lfir) (loop nil nir (min rl (- (vector-ref vx nil) (vector-ref va nil)) (- (vector-ref vx nir) (vector-ref va nir))) (max rr (+ (vector-ref vx nir) (vector-ref va nir)) (+ (vector-ref vx nil) (vector-ref va nil))))] [rfir (loop il nir (min rl (- (vector-ref vx nir) (vector-ref va nir))) (max rr (+ (vector-ref vx nir) (vector-ref va nir))))] [lfir (loop nil ir (min rl (- (vector-ref vx nil) (vector-ref va nil))) (max rr (+ (vector-ref vx nil) (vector-ref va nil))))] [else (- ir il -1)]) ))) (define (main args) (let* ([n (read)] [k (read)] [vx (vector-tabulate n (^_ (read)))] [va (vector-tabulate n (^_ (read)))]) (print (solve n k vx va))) 0)