(define (qsort-desc lst) (define (qsort-fitter lst key lt eq gt) (if (null? lst) (list lt eq gt) (let ((head (car lst)) (rest (cdr lst))) (cond ((> head key) (qsort-fitter rest key (cons head lt) eq gt)) ((< head key) (qsort-fitter rest key lt eq (cons head gt))) (else (qsort-fitter rest key lt (cons head eq) gt)))))) (if (<= (length lst) 1) lst (let ((key (car lst))) (let ((filtered (qsort-fitter lst key '() '() '()))) (let ((lt (car filtered)) (eq (cadr filtered)) (gt (caddr filtered))) (append (qsort-desc lt) (append eq (qsort-desc gt)))))))) (define (create-list n) (if (= n 0) '() (cons (read) (create-list (- n 1))))) (define (sum-max-index lst limit) (define (sum-max-indexx lst limit index) (cond ((null? lst) index) ((<= (sum-list lst) limit) index) (else (sum-max-indexx (cdr lst) limit (- index 1))))) (sum-max-indexx (qsort-desc lst) limit (length lst))) (let ((l (read)) (n (read))) (display (sum-max-index (create-list n) l)))