아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Разбиение на пары

시간 제한2초메모리 제한512 MB

요약
첫 번째 좌표가 모두 다른 n개의 점과 k개의 좌표(1 <= k <= 7)가 주어질 때, 모든 좌표에서 두 점의 값 사이에 공통값이 존재하도록 점을 짝지을 수 있는지 판정하고 그러한 짝짓기 하나를 출력한다.
난이도

보통10점 중 7점

유형
그래프, 그리디, 정렬, 구현
정답자
아직 제출이 없습니다

문제

Космические археологи обнаружили на планете в соседней звездной системе n древних артефактов, которые они пронумеровали от 1 до n. Каждый артефакт имеет k различных параметров, каждый параметр характеризуется целым числом. Артефакт i имеет параметры ai,1, ai,2, . . . , ai,k. Оказалось, что первые параметры у всех артефактов различны: для всех i ≠ j выполнено ai,1 ≠ aj,1, при этом другие параметры у артефактов могут совпадать.

Учёные также обнаружили текст, в соответствии с которым для активации артефактов их необходимо особым образом разбить на пары и совместить. Разбиение артефактов на пары является корректным, если для каждого t от 1 до k можно выбрать такое число bt, что оно лежит на отрезке между значениями t-го параметра артефактов каждой пары. То есть, если артефакты i и j образуют пару, должно выполняться условие ai,t ⩽ bt ⩽ aj,t или условие ai,t ⩾ bt ⩾ aj,t.

Теперь ученые хотят выяснить, верно ли расшифрован текст. Для этого необходимо проверить, существует ли корректное разбиение артефактов на пары. Каждый артефакт должен войти ровно в одну пару в разбиении.

Требуется написать программу, которая по описанию параметров артефактов определяет, можно ли разбить их на пары таким образом, чтобы для каждого параметра существовало значение, лежащее между значениями этого параметра артефактов каждой пары, и в случае положительного ответа выводит такое разбиение.

입력

В первой строке заданы целые числа n и k — количество артефактов и количество параметров (2 ⩽ n ⩽ 2 · 105, n чётно, 1 ⩽ k ⩽ 7).

В следующих n строках задано по k целых чисел ai,1, ai,2, . . . , ai,k — параметры артефактов (−109 ⩽ ai,j ⩽ 109, все значения ai,1 различны).

출력

Выведите «NO», если требуемого разбиения на пары не существует.

В противном случае выведите «YES» в первой строке. Далее выведите n/2 строк, в каждой строке выведите по два числа — номера артефактов, из которых следует составить пару. Каждый артефакт должен быть выведен ровно один раз.

Если существует несколько корректных разбиений артефактов на пары, разрешается вывести любое из них.

힌트

В первом примере пары имеют следующие параметры (8, 6) − (3, 1), (1, 5) − (7, 2), (6, 3) − (4, 7). При указанном разбиении на пары подойдут, например, значения b1 = 4, b2 = 4.

예제2

  1. 예제 1

    입력
    6 2
    8 6
    1 5
    6 3
    3 1
    4 7
    7 2
    
    예상 출력
    YES
    1 4
    2 6
    3 5
    
  2. 예제 2

    입력
    4 3
    1 -1 -1
    2 1 1
    3 -1 1
    4 1 -1
    
    예상 출력
    NO