array [1..5] of var 0..1: d; var 0..5: heapch; array [1..5] of var int: m :: output_array([1..5]); array [1..5] of var 1..5: n = [5, 4, 3, 2, 1]; array [1..5] of var int: s :: output_array([1..5]); array [1..4] of var int: w; array [1..20] of var 0..1: x; constraint int_le(0, m[1]); constraint int_le(0, m[2]); constraint int_le(0, m[3]); constraint int_le(0, m[4]); constraint int_le(0, m[5]); constraint int_le(0, s[1]); constraint int_le(0, s[2]); constraint int_le(0, s[3]); constraint int_le(0, s[4]); constraint int_le(0, s[5]); constraint int_le(0, w[1]); constraint int_le(0, w[2]); constraint int_le(0, w[3]); constraint int_le(0, w[4]); constraint int_lin_eq([-1, -1], [m[1], s[1]], -5); constraint int_lin_eq([-1, -1], [m[2], s[2]], -4); constraint int_lin_eq([-1, -1], [m[3], s[3]], -3); constraint int_lin_eq([-1, -1], [m[4], s[4]], -2); constraint int_lin_eq([-1, -1], [m[5], s[5]], -1); constraint int_lin_eq([-1, 1, 2, 4, 8], [m[1], x[1], x[2], x[3], x[4]], 0); constraint int_lin_eq([-1, 1, 2, 4, 8], [m[2], x[5], x[6], x[7], x[8]], 0); constraint int_lin_eq([-1, 1, 2, 4, 8], [m[3], x[9], x[10], x[11], x[12]], 0); constraint int_lin_eq([-1, 1, 2, 4, 8], [m[4], x[13], x[14], x[15], x[16]], 0); constraint int_lin_eq([-1, 1, 2, 4, 8], [m[5], x[17], x[18], x[19], x[20]], 0); constraint int_lin_eq([-2, 1, 1, 1, 1, 1], [w[1], x[1], x[5], x[9], x[13], x[17]], 0); constraint int_lin_eq([-2, 1, 1, 1, 1, 1], [w[2], x[2], x[6], x[10], x[14], x[18]], 0); constraint int_lin_eq([-2, 1, 1, 1, 1, 1], [w[3], x[3], x[7], x[11], x[15], x[19]], 0); constraint int_lin_eq([-2, 1, 1, 1, 1, 1], [w[4], x[4], x[8], x[12], x[16], x[20]], 0); constraint int_lin_eq([-1, 1, 1, 1, 1, 1], [heapch, d[1], d[2], d[3], d[4], d[5]], 0); constraint int_lin_le([-8, 1], [d[1], s[1]], 0); constraint int_lin_le([-8, 1], [d[2], s[2]], 0); constraint int_lin_le([-8, 1], [d[3], s[3]], 0); constraint int_lin_le([-8, 1], [d[4], s[4]], 0); constraint int_lin_le([-8, 1], [d[5], s[5]], 0); solve minimize heapch;