Вантажі не можна ділити, але їх можна довільно розподіляти по двох автівках, тому важлива лише сума мас S = m_1 + m_2 + m_3 + m_4 + m_5.
Далі — послідовність перевірок у порядку, заданому умовою:
якщо S > M_1 + M_2, разом вони не впораються — They can not do it!;
інакше, якщо M_1 \ge S і M_2 \ge S, кожен може сам — They both can do it!;
інакше, якщо M_1 \ge S — Vasyl can do it!;
інакше, якщо M_2 \ge S — Petro can do it!;
інакше потрібні обидві автівки, і треба вивести конкретний розподіл вантажів.
Останній випадок — єдиний, де доводиться щось шукати. Вантажів лише п'ять, тому найпростіше перебрати всі 2^5 = 32 способи розкласти їх по двох автівках і взяти будь-який, у якому сума мас у першій автівці не перевищує M_1, а в другій — M_2. Такий розподіл існує, бо ми вже знаємо, що S \le M_1 + M_2 і жодна автівка сама не справляється.
Перебір зручно робити маскою: біт маски вказує, у чию автівку їде -й вантаж.