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

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

파티 램프

면접 대비

시간 제한1초메모리 제한128 MB

요약
모두 켜진 N개의 램프에서 네 개의 토글 버튼을 정확히 C번 눌러 도달할 수 있고, 켜짐 최대 2개와 꺼짐 최대 2개의 조건을 만족하는 모든 최종 구성을 사전순으로 출력한다.
난이도

보통10점 중 6점

유형
완전 탐색, 비트 연산, 수학, 정렬
정답자
아직 제출이 없습니다

문제

11번부터 NN번까지 번호가 붙은 색색의 램프 NN개가 있습니다. 램프들은 네 개의 버튼에 연결되어 있습니다.

  • 버튼 1 — 모든 램프의 상태를 반전합니다. 켜져 있던 램프는 꺼지고, 꺼져 있던 램프는 켜집니다.
  • 버튼 2 — 홀수 번호 램프의 상태를 모두 반전합니다.
  • 버튼 3 — 짝수 번호 램프의 상태를 모두 반전합니다.
  • 버튼 4 — 번호가 3K+13K+1 (K≥0K \ge 0) 꼴인 램프, 즉 1,4,7,…1, 4, 7, \dots번 램프의 상태를 반전합니다.

버튼을 누른 총횟수는 계수기 CC에 기록됩니다.

행사가 시작될 때 모든 램프는 켜져 있고 계수기 CC는 00입니다.

계수기 CC의 값과 일부 램프의 최종 상태 정보가 주어집니다. 주어진 정보와 모순되지 않는 NN개 램프의 가능한 모든 최종 배열을, 서로 다른 배열마다 정확히 한 번씩 구하세요.

입력

입력은 램프 개수 NN, 버튼을 누른 횟수 CC, 그리고 일부 램프의 알려진 최종 상태를 나타내는 네 줄로 이루어집니다.

  • 첫째 줄에는 정수 NN이 주어집니다.
  • 둘째 줄에는 계수기 CC의 최종 값이 주어집니다.
  • 셋째 줄에는 최종 배열에서 켜져 있다고 알려진 램프 번호들이 공백으로 구분되어 주어지고, 정수 −1-1로 끝납니다.
  • 넷째 줄에는 최종 배열에서 꺼져 있다고 알려진 램프 번호들이 공백으로 구분되어 주어지고, 정수 −1-1로 끝납니다.

제약 조건:

  • 10≤N≤10010 \le N \le 100
  • 1≤C≤100001 \le C \le 10000
  • 켜져 있다고 알려진 램프는 최대 22개입니다.
  • 꺼져 있다고 알려진 램프는 최대 22개입니다.
  • 유효한 최종 배열이 항상 하나 이상 존재합니다.

출력

입력과 모순되지 않는 NN개 램프의 가능한 모든 최종 배열을 중복 없이 출력합니다.

각 배열은 한 줄에 NN개의 문자로 이루어진 문자열로 출력하며, ii번째 문자는 ii번 램프의 상태를 나타냅니다. 0은 꺼짐, 1은 켜짐을 뜻합니다.

배열은 사전순 오름차순으로 출력하세요 (예를 들어 0000000000이 0101010101보다 먼저 옵니다).

예제3

  1. 예제 1

    입력
    10
    1
    -1
    7 -1
    
    예상 출력
    0000000000
    0101010101
    0110110110
    
  2. 예제 2

    입력
    10
    2
    -1
    -1
    
    예상 출력
    0000000000
    0011100011
    0101010101
    1001001001
    1010101010
    1100011100
    1111111111
    
  3. 예제 3

    입력
    10
    1
    1 -1
    -1
    
    예상 출력
    1010101010