Я вже задавав це питання на stackoverflow , але, можливо, воно краще підходить для цього сайту.
Проблема полягає в наступному:
У мене є N пари пар цілих чисел. Мені потрібно їх сортувати. Кінцевий вектор пар повинен бути відсортований неодноразово за першим числом у кожній парі та несильно другим у кожній парі. Кожна пара може змінювати перший і другий елементи в будь-якій точці. Іноді рішення немає, тому мені потрібно кинути виняток тоді.
Приклад:
in pairs:
1 5
7 1
3 8
5 6
out pairs:
1 7 <-- swapped
1 5
6 5 <-- swapped
8 3 <-- swapped
^^ Без заміни пар неможливо побудувати рішення. Тож ми поміняємо парами (7, 1), (3, 8) і (5, 6) і будуємо результат. або
in pairs:
1 5
6 9
out:
not possible
Спасибі
редагувати:
Том Сіргедас на SO запропонував найкраще рішення . Це реально просто реалізувати і працює в O (log (n) * n). Дякую всім за відповіді та інтерес. Мені дуже сподобався аналіз mjqxxxx.