Фон
У Сполучених Штатах є унікальна любов до геримандерінгу - до навмисних маніпуляцій виборчим округом для прогнозування певних результатів голосування. Нещодавно перед Верховним Судом була порушена справа про загрозу родовищ . Геррімандерінг, особливо коли він пов'язаний з расою, визнається незаконним і призводить до вимоги переробити районні лінії.
Давши прямокутну карту муніципалітету (масив 2d), ви намалюєте районні лінії, щоб допомогти вашій партії отримати найбільше представництво. Тобто ви будете геримандер. Кожна громада має дві партії, 0
і 1
. Карта буде складатися з квадратів з 0
або 1
на них. Ось приклад карти:
Виклик
Ви згрупуєте карту за районами, щоб 1
партія отримала принаймні кількість округів, визначених Вводом.
Вхідні дані
Вхід складається з карти, кількості округів для малювання та мінімальної кількості округів, які 1
партія повинна виграти (мінімальний бал).
Вихідні дані
Виходом буде карта районів. Кожен район буде унікально складений з великої літери алфавіту. Так, це означає, що не буде більше 26 районів.
Якщо немає можливого результату, коли введена сторона виграє достатньо округів, будь-який:
- Роздрукувати "Ми спробували ..."
- Фатальна помилка, оскільки партія отримала непоправні пошкодження за результатами виборів
- Або і те й інше
Правила (також дуже важливо)
- Усі райони повинні бути суміжними
- Округи можуть не мати в них інших округів
- Кожен район повинен мати принаймні чотири вузли в ньому. Введення буде відповідати правилам, тобто
number_of_districts * 4
на карті буде принаймні вузли - Оцінка кожної партії - це кількість округів, у яких вона має більшість
- Якщо округ має однакову кількість
0
s і1
s, то жодна зі сторін від цього не має вигоди - Нормальні правила без обману
- Це код-гольф , тому найкоротший код у байтах виграє.
Тестові справи
1. Input 1. Output 2. Input 2. Output 3. Input 3. Output
districts: 5 Image and map districts: 3 Image below districts: 3 fatal error
min wins: 3 min wins: 3 min wins: 3
map: map: map:
00000110000 AAAAAAAAAAA 101101 101101
10000010000 AAAAAAAAAAA 100000 100000
10010000011 AAAAAAAAAAA 011011 011011
11001110000 BBBBBBBAAAA 111111 100111
00111111000 BBBBBBBAAAA
01111111000 CCCCCDDDAAA
01111111001 CCCCCDDDAAA
01000111100 EEEEEDDDDDD
00000001000 EEEEEDDDDDD
Звичайно, ваша програма повинна працювати для будь-яких дійсних тестових випадків, не тільки для цих.