program math_block implicit none integer(8) A,i,l,m,n real(8),allocatable :: x(:) read(*,*) l read(*,*) n allocate (x(n)) read(*,*) (x(m),m=1,n) call mat(x,n) A=0 do i=1,n A=A+x(i) if (A>l) exit end do write(*,*) (i-1) end program subroutine mat(x,n) integer(8) n,j,i,t real(8),dimension(n) ::x do i=1,n-1 do j=i+1,n if(x(i) > x(j))then t=x(i) x(i)=x(j) x(j)=t end if end do end do end subroutine