Задачі
Розкладування Пасьянса
Розкладування Пасьянса
\includegraphics{https://static.e-olymp.com/content/05/05a59779996b63c439954988fc1337c93cd4dbbd.jpg}
\includegraphics{https://static.e-olymp.com/content/56/56d51528350efc7833e9e9a9facf2e2e28d40e1a.jpg}
\includegraphics{https://static.e-olymp.com/content/28/283fb2df106142ed023b860c0faf64537977a348.jpg}
\includegraphics{https://static.e-olymp.com/content/3c/3cfba9ca77263cdb04bd327371fc5923b856015f.jpg}
"N-T пасьянс" - карточна гра для одного гравця. У грі використовується \textbf{4*N} (\textbf{3} ≤ \textbf{N} ≤ \textbf{15}) карт, причому кожній карті відповідає унікальна пара її значення (ціле число у діапазоні \textbf{1..N} та масті (, , або ). У початковому положенні усі карты розкладено у \textbf{T} (\textbf{4} ≤ \textbf{MT} ≤ \textbf{12}) стопок; при цьому кожна з перших \textbf{(4*N)\%T} стопок містить по \textbf{(4*N/T)+1} карт, інші - по \textbf{4*N/T} карт (тут "\textbf{/}" та "\textbf{\%}" - цілочисельне ділення та залишок при діленні відповідно). Якщо сума значень верхніх карт двох стопок дорівнює \textbf{N +1}, то ці дві карти можна перемістити у відбій (незалежно від їхніх мастей). Це єдиний спосіб переміщувати карти.
Напишіть програму, яка буде визначати, яку максимальну кількість карт можна перемістити у відбій і як це зробити.
\InputFile
\includegraphics{https://static.e-olymp.com/content/28/283fb2df106142ed023b860c0faf64537977a348.jpg}
\includegraphics{https://static.e-olymp.com/content/3c/3cfba9ca77263cdb04bd327371fc5923b856015f.jpg}
\includegraphics{https://static.e-olymp.com/content/05/05a59779996b63c439954988fc1337c93cd4dbbd.jpg}
\includegraphics{https://static.e-olymp.com/content/56/56d51528350efc7833e9e9a9facf2e2e28d40e1a.jpg}
Перший рядок містить два цілих числа \textbf{N} та \textbf{T}, далі йде \textbf{T} рядків з описами карт відповідної стопки. Кожна карта описується її значенням (ціле число) та мастю (символ з ASCII-кодом \textbf{03}(), \textbf{04}(), 05(), або \textbf{06}()) без пропуска між ними. Описи різних карт однієї стопки розділені рівно одним пропуском, напрямок опису зліва направо відповідає порядку карт знизу вверх.
\textbf{Приклад вхідних даних}
\includegraphics{https://static.e-olymp.com/content/0a/0a02930e6fb07541b2168c4f7faebe88381ca2c3.jpg}
\OutputFile
Ваша програма повинна вивести ціле число \textbf{S} - максимально можливу кількість карт, які можна перемістити у відбій. Потім \textbf{S/2} пар чисел, по парі у рядку - номери стопок, з яких потрібно знімати карти на черговому ході.
\textbf{Примітка}: Якщо існує декілька способів розкладування (з однаковою максимальною сумарною кількістю знятих карт), виведіть довільний.
Вхідні дані #1
3 5 2 2 2 2 3 1 3 1 1 3 1 3
Вихідні дані #1
10 2 4 2 3 1 2 4 5 3 5