#-swank (unless (member :child-sbcl *features*) (quit :recklessly-p t :unix-status (process-exit-code (run-program *runtime-pathname* `("--control-stack-size" "1024MB" "--noinform" "--disable-ldb" "--lose-on-corruption" "--end-runtime-options" "--eval" "(push :child-sbcl *features*)" "--script" ,(namestring *load-pathname*)) :output t :error t :input t)))) (defun main () (let* ((N (read)) (S (read)) (P (loop for i from 0 below N collect (read))) (index-pairs (loop for i from 0 below N collect (cons (nth i P) (1+ i)))) (sorted-pairs (stable-sort index-pairs #'< :key #'car)) (result '())) (loop for i from 0 below N for (value . index) = (nth i sorted-pairs) for left = (if (> i 0) (- value (car (nth (1- i) sorted-pairs))) most-positive-fixnum) for right = (if (< i (1- N)) (- (car (nth (1+ i) sorted-pairs)) value) most-positive-fixnum) for near = (min left right) when (> near S) do (push index result)) (setf result (sort result #'<)) (format t "~D~%" (length result)) (dolist (elem result) (format t "~D " elem)) (terpri))) (main)