#-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))) (indexed-P (loop for i from 0 below N collect (cons (nth i P) (1+ i)))) (sorted-P (sort indexed-P #'< :key #'car)) (result '())) (loop for i from 1 below N for (val1 . idx1) = (nth (1- i) sorted-P) for (val2 . idx2) = (nth i sorted-P) when (> (- val2 val1) S) do (push idx2 result)) (let* ((first (first sorted-P)) (last (first (last sorted-P)))) (when (> (- (car first) most-negative-fixnum) S) (push (cdr first) result)) (when (> (- most-positive-fixnum (car last)) S) (push (cdr last) result))) (setf result (sort result #'<)) (format t "~D~%" (length result)) (dolist (elem result) (format t "~D " elem)) (terpri))) (main)