Во входных данных мы имеем 12 чисел, некоторые из которых могут совпадать. Несложно понять, что в правильной коробке не может быть более 3х наборов различных размеров (это понятно так же из рассуждений в Решении №1). Пронумеруем всевозможные наборы размеров. Мы это можем делать сразу при чтении входных данных. В некоторой переменной C будем хранить количество различных размеров, а в массиве F[X] будет номер размера X или 0, если такого размера нет. Так же используем 2х-мерный массив G[i][j], где будет находиться количество плиток с номерами размеров i и j, для простоты, чтобы каждый раз не вращать плитки следует сделать так, чтобы G[i][j]=G[j][i]. Определить значение C и заполнить вышеописанные массивы возможно в одном цикле, сразу при чтении данных.
Теперь для определения возможности построения коробки достаточно знать ранее вычисленные значения C и G. Здесь нужно рассмотреть все случаи, которые могут быть в зависимости от количества разных размеров C:
C=1. Это означает, что все размеры одинаковые, т.е. все плитки представляют из себя равные квадраты и мы можем построить из них коробку в форме куба. Заметим так же, что в этом случае определено только G[1][1], которое равно 12 (это даже можно не проверять).
C=2. В этом случае для возможности построения коробки мы должны иметь 2 одинаковых квадратных плитки и 4 одинаковых прямоугольных, для чего достаточно проверить что G[1][2]=4. Заметим, что при этом либо G[1][1]=2 либо G[2][2]=2 (один из размеров дает две плитки, а другой 0). Но последнее условие можно не проверять, т.к. оно вытекает само из того, что C=2, а G[1][2]=4.
C=3. Здесь мы имеем случай, когда все размеры (высота, ширина и длина) различны. Тут для возможности построения коробки необходимо убедиться в том, что при этом получаются ровно по 2 одинаковых плитки для всевозможных G[i][j], 1 <= i,j <= 3. Иначе говоря, должно получаться G[1][2]=G[1][3]=G[2][3]=2.
C>3. При таком варианте, как уже говорилось ранее, мы не можем в любом случае построить коробку.