쿠키 설정

서비스 개선을 위해 분석 쿠키를 사용합니다. 자세히 보기

ALPHANO 로고

Betris (Large)

Top Player제출참여자

문제

Betris (Large) 문제는 Betris 문제와 보드의 크기, 칩의 개수, 블록 종류, 총 라운드 수를 제외한 차이는 없습니다.

Betris (Large)는 7×77 \times 7 크기의 보드 위에서 제시되는 폴리오미노 블록을 차지하기 위해 상대와 베팅 대결을 벌이고, 획득한 블록을 효율적으로 배치하여 보드를 채워나가는 전략 게임입니다.

1. 보드 및 구성 요소

각 플레이어는 게임이 시작할 때 비어 있는 보드 11개와 베팅에 사용할 칩 2424개를 보유합니다.

fig1

보드는 7777열로 구성되어 있습니다. 행 번호는 위에서 아래로 11행부터 77행까지, 열 번호는 왼쪽에서 오른쪽으로 11열부터 77열까지이며, xxyy열의 칸을 (x,y)(x, y)로 표기합니다. 칩은 이후 베팅 단계에서 사용할 수 있습니다.

fig2 fig3

게임에는 2121종의 폴리오미노 블록이 사용됩니다. 각 블록의 모양 및 명칭은 위와 같습니다.

2. 게임 진행

게임은 총 1212라운드 동안 진행됩니다. 각 라운드는 베팅 단계와 배치 단계로 나뉩니다.

1단계: 베팅 단계 (Betting Phase)

  • 채점기는 2121종의 블록 중 하나를 균등한 확률로 선택해 AA로 정한 뒤, AA를 제외한 2020종의 블록 중 하나를 균등한 확률로 선택해 BB로 정합니다.
  • 각 플레이어는 AA 또는 BB 중 원하는 블록과 베팅할 칩 개수를 채점기에 전달합니다. 베팅에 사용할 칩 개수는 00 이상 55 이하여야 하며, 자신이 현재 보유하고 있는 칩 개수 이하여야 합니다.
  • 두 플레이어가 원하는 블록과 칩 개수를 결정했다면, 이후 채점기는 다음 규칙에 따라 베팅 성공 여부를 플레이어에게 알려줍니다.
  • 두 플레이어가 서로 다른 블록을 선택했다면, 두 플레이어 모두 베팅에 성공합니다.
  • 두 플레이어가 같은 블록을 선택했고 베팅한 칩 개수가 다르다면, 베팅한 칩 개수가 더 많은 플레이어가 베팅에 성공합니다.
  • 두 플레이어가 같은 블록을 선택했고 베팅한 칩 개수가 같다면, 채점기가 무작위로 고른 한 플레이어가 베팅에 성공합니다.
  • 베팅에 성공한 플레이어는 자신이 원하는 블록을 획득하며, 자신이 베팅한 칩 개수만큼의 칩을 지불합니다.
  • 베팅에 실패한 플레이어는 자신이 원하지 않은 블록을 획득하며, 칩을 지불하지 않습니다.

2단계: 배치 단계 (Placement Phase)

  • 각 플레이어는 획득한 블록을 원하는 만큼 시계 방향으로 90°90\degree 회전시킬 수 있습니다.
  • 각 플레이어는 획득한 블록을 원하는 만큼 좌우로 대칭시킬 수 있습니다.
  • 이후 플레이어는 보드에 블록을 배치하거나 패스를 선택할 수 있습니다.
  • 배치를 선택하면 블록은 보드를 벗어나지 않으면서 다른 블록이 차지하지 않은 칸에 배치되어야 합니다.
  • 블록을 배치할 공간이 있더라도 배치하지 않는 것이 유리하다고 판단되면 패스를 선택할 수 있습니다.

3. 점수 산정

모든 라운드가 종료된 후, 각 플레이어의 점수는 다음과 같이 계산됩니다.

  • 보드에서 블록이 차지하고 있는 칸의 개수당 11점을 획득합니다.
  • 보드 위의 채워진 칸으로만 만들 수 있는 가장 큰 정사각형의 칸의 개수당 11점을 획득합니다.
  • 남은 칩 개수당 0.50.5점을 획득합니다.

예를 들어, 다음과 같은 경우 플레이어의 점수는 42+25+3×0.5=68.542 + 25 + 3 \times 0.5 = 68.5점입니다.

fig4

최종 승자는 점수가 더 높은 플레이어이며, 점수가 같다면 무승부입니다.

입력

채점기는 다음의 한 줄 단위로 플레이어와 통신합니다.

명령어 채점기→플레이어 (입력) 플레이어→채점기 (출력) 시간 제한 (ms) 설명
READY READY OK 3000 게임의 시작을 알립니다.
PHASE1 PHASE1 A B my_time opp_time BET C x my_time 채점기가 선택한 블록 쌍 (A,B)(A, B)와 나와 상대의 남은 시간을 알립니다. 이번 턴에 내가 선택한 블록과 베팅한 칩 개수를 출력합니다.
PHASE2 PHASE2 C my_chip opp_chip my_time opp_time PLACE k x1 y1 ... xk yk my_time 베팅 단계가 끝난 뒤, 내가 획득한 블록, 나와 상대의 남은 칩 개수와 시간을 알립니다. 이후 배치 단계에서 배치를 선택했다면, 새로 배치한 블록이 차지하는 칸의 개수와 좌표를 출력합니다. 패스를 선택했다면 PLACE 0을 출력합니다.
OPP OPP k x1 y1 ... xk yk - - 배치 단계가 끝난 뒤, 상대가 출력한 k x1 y1 ... xk yk를 알립니다.
FINISH FINISH - - 게임 종료를 알립니다. 플레이어는 추가 출력 없이 프로그램을 정상 종료해야 합니다.

READY 명령어는 11라운드가 시작하기 전에 한 번 주어지며, FINISH 명령어는 1212라운드가 끝난 뒤에 한 번 주어집니다.

PHASE1, PHASE2, OPP 명령어는 각 라운드마다 순서대로 한 번씩 주어집니다.

PHASE1의 명령어의 입력은 다음의 조건을 만족하며, 출력은 다음의 조건을 만족해야 합니다.

  • 입력의 A, BI1, I2, I3, L3, I4, L4, S4, T4, O4, I5, L5, F5, N5, P5, T5, U5, V5, W5, X5, Y5, Z5 중 하나입니다.
  • 입력의 A, B는 서로 다릅니다.
  • 출력의 C는 입력으로 주어진 A, B중 하나여야 합니다.
  • 출력의 x00 이상 55 이하의 정수여야 하며, 내가 가진 칩 개수를 넘으면 안됩니다.

PHASE2의 명령어의 입력은 다음의 조건을 만족하며, 출력은 다음의 조건을 만족해야 합니다.

  • 입력의 C는 이전 베팅 단계에서 입력으로 주어진 A, B 중 하나입니다.
  • 출력의 k x1 y1 ... xk yk는 단일 공백으로 구분된 2k+12k + 1개의 정수여야 합니다.
  • k>0k > 0인 경우 kkC의 칸 개수여야 합니다.
  • k>0k > 0인 경우 이어지는 2k2k개의 정수는 차례로 배치 단계에서 블록이 배치되는 서로 다른 kk개 칸의 좌표 (x1,y1),,(xk,yk)(x_1, y_1), \cdots, (x_k, y_k)를 의미해야 하며, 규칙에 맞게 플레이할 때 C를 해당 위치에 배치할 수 있어야 합니다.

모든 명령어에서 입력은 다음의 조건을 만족하며, 출력은 다음의 조건을 만족해야 합니다.

  • my_chip, opp_chip은 정수입니다.
  • my_time, opp_time은 정수이며, 시간은 밀리초(millisecond) 단위로 주어집니다.
  • 모든 출력 후에는 개행문자를 출력한 뒤 버퍼를 flush해야 합니다.
  • 시간 제한이 있는 명령에서 출력을 제한 내에 수행하지 않으면 시간 초과(TLE) 판정을 받습니다.
  • 출력 형식에 맞지 않는 문자열을 출력하면 런타임 에러(RE) 판정을 받습니다.

예시

P1 입력 P1 출력 P2 입력 P2 출력
READY READY
OK OK
PHASE1 I2 F5 10000 10000 PHASE1 I2 F5 10000 10000
BET F5 4 BET F5 4
PHASE2 F5 20 24 9999 9999 PHASE2 I2 24 20 9999 9999
PLACE 5 1 1 1 2 2 2 2 3 3 2 PLACE 2 1 1 1 2
OPP 2 1 1 1 2 OPP 5 1 1 1 2 2 2 2 3 3 2
PHASE1 P5 L3 9998 9998 PHASE1 P5 L3 9998 9998
BET P5 5 BET L3 2
PHASE2 P5 15 22 9997 9997 PHASE2 L3 22 15 9997 9997
PLACE 5 1 3 1 4 1 5 2 4 2 5 PLACE 3 1 3 1 4 2 3
OPP 3 1 3 1 4 2 3 OPP 5 1 3 1 4 1 5 2 4 2 5
\cdots \cdots \cdots \cdots
FINISH FINISH

샘플 코드

제한

  • 시간 : 각 플레이어에게 주어지는 첫 번째 PHASE1 명령어에서 my_time1000010\,000ms입니다.
  • 메모리 : 1024MB
  • 채점 환경 : HELP > 채점 환경