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

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

연속된 1

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

요약
0과 1로 이루어진 행렬에서 각 행의 1이 연속되도록 열을 재배열하되, 0번 열은 첫 번째 자리에 고정한다.
난이도

어려움10점 중 8점

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

문제

스케줄은 nn개의 행과 mm개의 열로 이루어진 0-1 행렬로 표현된다. 각 행은 한 사람을, 각 열은 하나의 이벤트를 나타낸다. 어떤 사람이 이벤트에 참여하면 그 행의 해당 칸이 1이고, 참여하지 않으면 0이다. 이벤트는 열의 순서대로 하나씩 연이어 열린다.

예를 들어, 다음 행렬은 이러한 스케줄을 나타낼 수 있다.

00000000000000000011
11111111000000000000
00000000000000001111
00000000000011000000
00000000000000111100
00000000000001110000
00111000000000000000
00000000000111000000
00000000111100000000
00000000000000000001
11000000000000000000
00001111111000000000
00000111111111111111
00000000011111100000
00000000001111111110
00000000000000011110
00000001111100000000
00000011111111110000
00011110000000000000
01111111111100000000
00000000000000000111

모든 행에서 1들이 연속되도록 열의 순서를 바꾸어라(열을 재배열하라). 즉, 각 사람이 자신의 모든 이벤트를 중간에 빠짐없이 연달아 참여하게 되는 이벤트 순서를 찾아라.

입력

첫째 줄에 행의 수 nn (n≤400n \le 400)이 주어진다. 둘째 줄에 열의 수 mm (m≤400m \le 400)이 주어진다. 이후 nn개의 줄에 각각 0 또는 1로 이루어진 길이 mm의 문자열이 주어지며, 행렬의 한 행을 나타낸다.

열은 00번부터 번호가 매겨진다. 입력 행렬은 00번 열을 00번 위치에 고정했을 때 조건을 만족하는 재배열이 정확히 하나만 존재하도록 주어진다. 또한 임의의 두 열이 공통으로 갖는 1의 개수는 적다.

출력

열의 재배열을 나타내는 mm개의 정수를 한 줄에 하나씩 출력한다. 첫 줄의 값은 반드시 00이어야 한다(00번 열은 움직이지 않는다). ii번째 줄(0-indexed)의 값은 재배열에서 위치 ii에 놓이는 열의 원래 인덱스이다.

예제5

  1. 예제 1

    입력
    3
    4
    0110
    0001
    1101
    
    예상 출력
    0
    3
    1
    2
    
  2. 예제 2

    입력
    6
    5
    01010
    01000
    10101
    10100
    00011
    00101
    
    예상 출력
    0
    2
    4
    3
    1
    
  3. 예제 3

    입력
    1
    1
    1
    
    예상 출력
    0
    
  4. 예제 4

    입력
    1
    2
    11
    
    예상 출력
    0
    1
    
  5. 예제 5

    입력
    7
    6
    110000
    010010
    000110
    001100
    001001
    010110
    001110
    
    예상 출력
    0
    1
    4
    3
    2
    5