Задача понятна: дано перечисление чисел 1 и 11. Нужно вывести упорядоченный по возрастанию массив этих же чисел. Так как возможны только два разных значения, удобнее посчитать их количество и вывести в нужном порядке: сначала все 1, затем все 11.
Пошаговое решение:
- Разделить входную строку на элементы по пробелам.
- Подсчитать сколько встретилось чисел 1 и сколько 11.
- Вывести сначала столько единиц, сколько их нашлось, потом столько двоек-одинаковых 11.
- Соединить числа пробелами в одну строку.
Пример:
- Ввод: 1 11 1 11 1
- Подсчет: c1 = 3, c11 = 2
- Вывод: 1 1 1 11 11
Сложность:
- Временная: O(n), где n — число элементов во входной строке.
- Память: O(1) дополнительно (не считая входные данные и итоговую строку).
Простой пример реализации на Python (помогает понять идею, можно адаптировать под другой язык):
- Вариант 1: читает всю строку из входа def sort_sequence(s): tokens = s.strip().split() c1 = 0 c11 = 0 for t in tokens: if t == '1': c1 += 1 elif t == '11': c11 += 1 else: # здесь можно обрабатывать ошибку, но согласно условию ведомо, что есть только 1 и 11 pass return ' '.join(['1'] * c1 + ['11'] * c11)
Пример использования
inp = "1 11 1 11 1" print(sort_sequence(inp)) # вывод: 1 1 1 11 11
- Вариант 2: компактно через счётчик и чтение из stdin (если задача приходит как файл или через поток): import sys
def main(): s = sys.stdin.read().strip() tokens = s.split() c1 = tokens.count('1') c11 = tokens.count('11') out = ['1'] * c1 + ['11'] * c11 print(' '.join(out))
if name == "main": main()
Если у вас другие требования к формату ввода/вывода (например, нужно писать в одну строку без лишних пробелов, или использовать другой язык), скажите — адаптирую под них.