M = X*N마리의 개에게 주거지와 보조 주거지를 배정해, 어떤 집을 하나 닫아도 열린 집마다 잠자는 개가 X+1마리를 넘지 않도록 만든다.
보통7조합론그리디수학구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB베라에게 1번부터 N번까지 번호가 붙은 개집 N개와 1번부터 M번까지 번호가 붙은 개 M마리가 있다. 여기서 M=X×N이다. 개집 i는 정확히 X마리 Pi,1,…,Pi,X의 주 거처이면서 또 다른 X마리 Si,1,…,Si,X의 보조 거처여야 한다. 개마다 주 거처가 하나, 보조 거처가 하나 있고 둘은 서로 다른 개집이다.
밤마다 청소 때문에 개집이 최대 하나 닫힌다. 개는 자기 주 거처가 열려 있으면 그곳에서 자고, 닫혀 있으면 보조 거처에서 잔다. 어떤 개집도 닫히지 않는 밤을 포함해 가능한 모든 밤에, 열려 있는 개집마다 자는 개가 X+1마리를 넘지 않아야 한다.
조건을 모두 만족하는 배정을 하나 찾거나, 그런 배정이 없음을 판정하라.
첫째 줄에 정수 N과 X가 주어진다 (1≤N,X≤2017, X×N≤50000).
조건을 만족하는 배정이 없으면 첫째 줄에 -1을 출력한다.
배정이 있으면 N개의 줄을 출력한다. i번째 줄에는 정수 2X개를 출력한다. 먼저 개집 i를 주 거처로 삼는 개 X마리를 번호가 커지는 순서로, 이어서 개집 i를 보조 거처로 삼는 개 X마리를 번호가 커지는 순서로 쓴다.
조건을 만족하는 배정이 여러 가지이므로 다음 배정만 정답으로 인정한다. 1 이상 N 이하인 모든 i와 1 이상 X 이하인 모든 k에 대해, (i−1)X+k번 개의 주 거처는 개집 i이고 보조 거처는 개집 ((i+k−1)modN)+1이다.
개집 번호와 개 번호는 모두 1번부터 시작한다. 어떤 개집도 닫히지 않는 밤도 정원 조건을 만족해야 하며, 그런 밤에는 개집마다 그곳을 주 거처로 삼는 개 X마리가 그대로 잔다.