begin #箱の幅の入力&数値変換 l = gets.to_i #ブロック数の入力&数値変換 n = gets.to_i #各ブロックの幅の入力&数値変換 wi = gets.split(" ").map(&:to_i) #不適切な値の抽出(0が含まれていないか) if l == 0 || n == 0 raise end wi.each do |i| if i == 0 raise end end #不適切な値の抽出(ブロック個数の整合性) if n != wi.length raise end #計算 wi.sort! i = 0 while l >= 0 && i < n do l -= wi[i] i += 1 end if(l < 0) p i - 1 else p i end rescue puts "入力が不適切なため、処理を終了します" end