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

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

육각형 콜로니

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

요약
육각 방 블록을 골라 노출된 벽 창문으로 P명 이상을 수용하고 블록 수는 최소화합니다.
난이도

보통10점 중 5점

유형
그리디, 기하, 정렬, 해시맵
정답자
아직 제출이 없습니다

문제

우주선 노스트로모의 임무 중 하나는 켄타우루스자리의 행성 MX8-26B 궤도에 영구 기지를 세우는 것이다. 기지는 단지를 이어서 만들고, 단지 하나는 똑같은 모양의 육각형 방을 변끼리 붙여 놓은 덩어리다. 방의 여섯 변에는 각각 구멍이 하나 있다. 완성된 기지에서 그 변에 다른 방이 붙어 있으면 구멍은 통로가 되고, 아무것도 붙어 있지 않으면 창문이 된다. 방을 붙이는 방법이 여러 가지이므로 단지 모양도 여러 가지다.

여행자들은 모양마다 정해진 개수의 단지를 가지고 있다. 완성된 기지에서 방 하나는 그 방의 창문 수와 같은 인원을 수용한다. 단지는 평면에서 마음대로 옮기고 돌려서 놓을 수 있지만 서로 다른 단지의 방이 겹쳐서는 안 되고, 완성된 기지는 하나로 이어져 있어야 한다. 서로 다른 단지가 맞대는 벽의 수는 연결에 필요한 최솟값까지 줄일 수 있다고 가정한다.

가지고 있는 단지의 목록이 주어질 때, PP명 이상을 수용하는 기지를 세울 수 있는지 판정하는 프로그램을 작성하시오. 가지고 있는 단지를 모두 쓸 필요는 없다.

입력

첫째 줄에 테스트 케이스의 수 NN이 주어진다. 각 테스트 케이스의 첫째 줄에는 양의 정수 PP와 TT가 공백으로 구분되어 주어진다 (P≤1000000P \le 1000000, T≤1000T \le 1000). PP는 기지가 수용해야 하는 인원이고, TT는 쓸 수 있는 단지 모양의 수다.

다음 TT개의 줄에는 단지 모양 하나를 나타내는 정수가 공백으로 구분되어 주어진다. 각 줄의 처음 두 정수는 CC와 SS다 (0≤C≤10000 \le C \le 1000, 1≤S≤10001 \le S \le 1000). CC는 이 모양의 단지를 몇 개 가지고 있는지, SS는 단지를 이루는 방의 수다. 모든 단지는 하나로 이어져 있고, 방의 육각형 바닥면은 모두 한 평면에 놓인다.

같은 줄의 나머지에는 SS쌍의 정수가 온다. 각 쌍은 육각 좌표계에서 바닥면 중심의 xx좌표와 yy좌표다 (−10000000≤x,y≤10000000-10000000 \le x, y \le 10000000). 육각 좌표계의 xx축은 직교 좌표계의 xx축과 −30∘-30^\circ를 이루고, 육각 좌표계의 yy축은 직교 좌표계의 xx축과 +30∘+30^\circ를 이룬다. 따라서 좌표가 (x,y)(x, y)인 방은 (x+1,y)(x+1, y), (x−1,y)(x-1, y), (x,y+1)(x, y+1), (x,y−1)(x, y-1), (x+1,y−1)(x+1, y-1), (x−1,y+1)(x-1, y+1)에 있는 여섯 방과 벽을 맞댄다.

출력

각 테스트 케이스마다 정확히 한 줄을 출력한다. PP명 이상을 수용하는 기지를 세울 수 있으면 Je treba X celku.를 출력한다. 여기서 X는 모양과 연결 방식을 가장 좋게 골랐을 때 필요한 단지 수의 최솟값이다. 세울 수 없으면 Kapacita zakladny je pouze X lidi.를 출력한다. 여기서 X는 가지고 있는 단지를 모두 써서 가장 좋게 지은 기지가 수용하는 최대 인원이다.

예제3

  1. 예제 1

    입력
    3
    50 5
    10 1 0 0
    3 4 0 0 1 0 2 0 2 1
    4 5 0 0 0 1 0 2 1 1 2 0
    6 6 0 0 1 0 2 0 0 1 1 1 0 2
    1 7 1 0 2 0 0 1 1 1 2 1 0 2 1 2
    11 1
    2 1 0 0
    10 2
    100 1 1 1
    0 2 0 0 1 0
    
    예상 출력
    Je treba 3 celku.
    Kapacita zakladny je pouze 10 lidi.
    Je treba 2 celku.
    
  2. 예제 2

    입력
    2
    6 1
    5 1 0 0
    1 1
    3 1 0 0
    
    예상 출력
    Je treba 1 celku.
    Je treba 1 celku.
    
  3. 예제 3

    입력
    1
    1 2
    0 1 0 0
    0 4 0 0 1 0 2 0 2 1
    
    예상 출력
    Kapacita zakladny je pouze 0 lidi.