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

Оптимальное разбиение

Оптимальное разбиение

Пусть есть множество \textbf{A}, содержащее все натуральные числа от \textbf{1} до \textbf{N}. требуется разбить его на два непересекающихся множества \textbf{A_1} и \textbf{A_2} (\textbf{A_1} ∩ \textbf{A_2} = Ø, \textbf{A_1} U \textbf{A_2} = \textbf{A}). Обозначим \textbf{N_1} и \textbf{N_2} - количества элементов, а\textbf{S_1} и \textbf{S_2} - сумм всех элементов в множествах \textbf{A_1} и \textbf{A_2} соответственно, \textbf{ΔN = |N_1-N_2|}, \textbf{ΔS = |S_1-S_2|}. Задаются два критерия оптимальности: один из них на величину \textbf{ΔN}, другой - на \textbf{ΔS}. Критерии могут требовать максимальности или минимальности величин. Ваша задача - найти разбиение, являющееся оптимальным в смысле первого из заданных критериев. Если таких разбиений несколько, то следует выбрать из них оптимальное в смысле второго критерия. Если же и таких несколько, то можно выводить любое из них. \InputFile В первой строке входного файла задаётся натуральное число \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{10^6}). Во второй и третьей строках определяются первый и второй критерии соответственно. Первый символ каждой из этих строк определяет оптимизирующую притерием величину ("\textbf{N}" для величины ΔN или "\textbf{S}" для ΔS), а далее через пробел - требование критерия на эту величину ("\textbf{min}" - требование минимальности, "\textbf{max}" - требование максимальности соответствующей величины). \OutputFile В выходной файл необходимо вывести две строки. Первая из них определяет множество \textbf{A_1} разбиения, вторая - множестов \textbf{A_2}. Первое числ в строке - количество элементов в множестве, а за ним следуют значения всех элементов в множестве в порядке возрастания.
Ліміт часу 1 секунда
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
2
S max
N max
Вихідні дані #1
2
3
Джерело III Міжнародна Літня школа програмування 2012 м. Севастополь