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

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

탐사

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

요약
길이 K인 이진 도로에서 구간 합 질의 결과들이 주어질 때, 모든 결과를 만족하는 사전순으로 가장 작은 물체 배치를 구하거나 NONE을 출력한다.
난이도

보통10점 중 6점

유형
배열, 누적 합, 그리디, 완전 탐색
정답자
아직 제출이 없습니다

문제

직선 도로 어딘가에 특별한 물체 여러 개가 묻혀 있다. 직선 도로를 길이 KK의 일차원 배열로 생각하자. 각 단위 구간에는 물체가 하나 있거나(#) 없다(-). 아래 그림에서 숫자는 단위 구간의 번호이고, ▲ 표시가 있는 칸에 물체가 있다.

123456789101112
▲▲▲▲▲▲

그림 1

우리는 연속한 구간에 들어 있는 물체의 개수를 질의 Probe[x, y]로 확인할 수 있다. 구간 xx부터 yy까지에 물체가 rr개 있으면 Probe[x, y] = r로 나타낸다(단 x≤yx \le y). 예를 들어 그림 1에서는 Probe[2, 7] = 3, Probe[2, 2] = 0, Probe[6, 9] = 4, Probe[5, 12] = 5이다.

주어진 모든 탐사 결과를 동시에 만족하는 도로의 물체 배치를 복원하는 프로그램을 작성하라.

입력

첫 줄에 두 정수 KK와 NN이 주어진다. KK는 전체 구간의 길이, NN은 탐사 결과의 개수이다. 이어지는 NN개의 줄에는 각각 하나의 탐사 결과가 공백으로 구분된 세 정수 xx yy rr로 주어지며, 이는 Probe[x, y] = r를 뜻한다.

제한: 3≤K≤403 \le K \le 40, 2≤N≤10002 \le N \le 1000, 1≤x≤y≤K1 \le x \le y \le K, 0≤r≤10000 \le r \le 1000.

출력

모든 탐사 결과를 만족하는 배치를 길이 KK의 문자열로 출력한다. 물체가 있는 칸은 #, 없는 칸은 -로 표시한다. 조건을 만족하는 배치가 여러 개이면 그중 사전순으로 가장 앞서는 문자열을 출력한다(문자 단위로 비교하며, #이 -보다 앞선다). 모든 탐사 결과를 만족하는 배치가 존재하지 않으면 NONE을 출력한다.

예제2

  1. 예제 1

    입력
    12 7
    1 8 4
    6 10 4
    2 12 6
    9 12 2
    4 6 1
    1 4 1
    11 11 0
    
    예상 출력
    -#--#-####--
    
  2. 예제 2

    입력
    12 2
    1 10 1
    4 7 3
    
    예상 출력
    NONE