6 use List::Util qw(sum);
7 chomp (my @packs = reverse <>);
8 # my @packs = reverse(1 .. 5, 7 .. 11);
17 my ($s1, $s2, $l1, $qe, @rest) = @_;
19 say "$s1 $s2 $l1 $qe";
23 say "min=$min, minqe=$qe";
24 } elsif ($l1 == $min && (!$minqe || $qe < $minqe)) {
30 for my $i (0 .. $#rest) {
32 my $n = splice (@nr, $i, 1);
33 if ($s1 < $size && $s1 + $n <= $size && $l1+1 <= $min) {
34 divide($s1+$n, 0, $l1+1, $qe*$n, @nr);
35 } elsif ($s1 == $size && $s2 < $size && $s2 + $n <= $size
36 && ($l1 < $min || ($l1 == $min && $qe < $minqe))) {
37 # say "l2 $s1, $s2+$n, $l1, $qe";
38 divide($s1, $s2+$n, $l1, $qe, @nr);
43 divide(0, 0, 0, 1, @packs);