Otrzymujesz mnóstwo ciężarów, a Twoim zadaniem jest zbudowanie małego, zrównoważonego telefonu komórkowego przy użyciu tych ciężarów.
Dane wejściowe to lista liczb całkowitych w zakresie od 1 do 9 włącznie. Mogą istnieć duplikaty.
Wyjście to obraz ascii telefonu komórkowego, który po zawieszeniu byłby zrównoważony. Być może najlepiej to pokazuje przykład:
Wejście
3 8 9 7 5
możliwa wydajność
|
+-----+---------+
| |
+--+-+ +----+------+
| | | |
8 ++--+ 7 5
| |
9 3
Musisz użyć znaków ascii, jak pokazano. Segmenty poziomy i pionowy mogą mieć dowolną długość. Żadna część telefonu komórkowego nie może dotykać (poziomo lub pionowo) innej niepołączonej części telefonu komórkowego. Wszystkie obciążniki muszą być zawieszone na pionowym segmencie o długości co najmniej 1 i musi istnieć pionowy segment, na którym zawieszony jest cały telefon.
Wielkość komórkowego jest całkowita liczba +
, -
i |
znaki wymagane, aby go zbudować. Niższe rozmiary są lepsze.
Możesz umieścić tyle połączeń w segmencie, ile chcesz. Na przykład:
Wejście
2 3 3 5 3 9
możliwa wydajność
|
+---+---+-----------+
| | |
+--+-+ 5 9
| | |
2 | 3
|
+++
| |
3 3
Zwycięskim programem jest ten, który może wygenerować najniższą średnią wielkość urządzeń mobilnych dla testowego zestawu danych wejściowych. Prawdziwy test jest super tajny, aby zapobiec kodowaniu na stałe, ale będzie on mniej więcej taki:
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 7 7
3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7
total_weight_hung_from_point * distance_of_point_from_pivot
musi być taka sama po obu stronach punktu obrotu.