eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Розкладування Пасьянса

Розкладування Пасьянса

\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{Примітка}: Якщо існує декілька способів розкладування (з однаковою максимальною сумарною кількістю знятих карт), виведіть довільний.
Ліміт часу 2 секунди
Ліміт використання пам'яті 64 MiB
Вхідні дані #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
Автор Ілля Порубльов
Джерело Літня школа Севастополь 2013, Хвиля 1, День 2