만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

선과 포커의 결합

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

요약
격자판에서 색깔 있는 조각을 맞바꾸고, 특수 효과와 중력을 적용하며 연쇄 소거를 시뮬레이션한 뒤 총점을 구합니다.
난이도

보통10점 중 5점

유형
시뮬레이션, 구현, 행렬
정답자
아직 제출이 없습니다

문제

n×mn \times m 크기의 보드가 주어진다. 왼쪽 위 칸은 (1,1)(1, 1), 오른쪽 아래 칸은 (n,m)(n, m)이다. 조각의 색은 11부터 kk까지 kk가지가 있으며, 처음에는 모든 칸에 조각이 하나씩 놓여 있다.

연산은 총 qq번 주어진다. 각 연산은 상하좌우로 인접한 두 조각을 서로 바꾼다. 그다음 같은 행이나 같은 열에서 같은 색 조각이 3개 이상 연속으로 이어진 부분을 모두 제거한다.

제거가 끝나면 중력에 따라 조각이 아래로 떨어지고, 각 열의 위쪽에 빈칸이 생긴다. 모든 조각이 떨어진 뒤에도 제거할 수 있는 조각이 남아 있으면 연쇄 반응이 일어나, 더 이상 제거할 것이 없을 때까지 계속된다. 한 번의 제거와 한 번의 낙하를 합쳐 '한 라운드'라고 부른다. 연산 하나가 일으키는 라운드 수를 그 연산의 '라운드 수'라고 한다.

일부 조각은 제거될 때 특수 효과를 발동하는 특수 속성을 가진다. 특수 속성은 6가지다.

  • 제거되면 같은 행의 모든 조각이 제거된다.
  • 제거되면 같은 열의 모든 조각이 제거된다.
  • 제거되면 같은 행과 같은 열의 모든 조각이 제거된다.
  • 제거되면 자신을 중심으로 한 3×33 \times 3 정사각형 안의 모든 조각이 제거된다.
  • 제거되면 자신을 중심으로 한 5×55 \times 5 정사각형 안의 모든 조각이 제거된다.
  • 제거되면 같은 색의 모든 조각이 제거된다.

특수 효과는 다른 조각의 특수 효과를 다시 발동시킬 수 있다. 이 모든 일은 같은 라운드 안에서 연쇄적으로, 중력에 의한 낙하 전에 일어난다.

연산이 유효하려면 두 위치가 인접해 있고, 둘 다 비어 있지 않으며, 교환으로 최소 한 번의 제거가 일어나야 한다. 유효하지 않은 연산은 건너뛴다. 게임은 qq번의 연산을 모두 처리하면 끝난다.

유효한 연산의 주색은 교환으로 직접 제거되는 색을 말한다. 특수 효과나 낙하로 제거된 조각은 포함하지 않는다. 유효한 연산의 주색은 1가지 또는 2가지다.

플레이어는 제거 점수, 연쇄 점수, 조합 점수, 패턴 점수, 종료 점수의 다섯 가지 점수를 얻는다.

  • 제거 점수: 유효한 연산의 ii번째 라운드 제거 점수는, 그 라운드에서 제거된 모든 조각의 색 번호 합에 ii를 곱한 값이다.
  • 연쇄 점수: 유효한 연산의 총 라운드 수가 xx이면, 연쇄 점수는 80⋅(x−1)280 \cdot (x - 1)^2이다.
  • 조합 점수: 한 라운드에서 같은 행이나 열에 같은 색이 3개 이상 연속으로 놓여 제거된 경우만 본다. 특수 효과로 제거된 것은 제외한다. 변으로 연결된 같은 색 덩어리의 크기가 xx이면, 조합 점수는 50(x−3)250(x-3)^2이다. 예를 들어 한 줄에 4개가 놓이면 5050점이다. 한 줄, 십자형, T자형으로 5개가 놓이면 200200점이다. 낙하 후 생길 수 있는 2×32 \times 3 크기의 같은 색 덩어리는 450450점이다.
  • 패턴 점수: 유효한 연산 5회마다, 직전 5회 연산의 주색으로 패턴 점수를 계산한다. 연산에 주색이 2가지 있으면, 점수가 더 높아지는 쪽을 택한다. 규칙은 다음과 같다.
    • 하이카드: 5가지 색이 모두 다르다. 점수는 5050에 가장 큰 색 번호를 더한 값이다.
    • 원 페어: 같은 색 2개와 다른 색 3개다. 점수는 100100에 페어 색 번호의 22배를 더한 값이다.
    • 투 페어: 두 쌍의 페어와 다른 색 1개다. 점수는 200200에 큰 쪽 페어 색 번호의 22배와 작은 쪽 페어 색 번호를 더한 값이다.
    • 쓰리 오브 어 카인드: 같은 색 3개와 다른 색 2가지다. 점수는 300300에 트리플 색 번호의 33배를 더한 값이다.
    • 풀하우스: 같은 색 3개와 다른 색 2개다. 점수는 500500에 트리플 색 번호의 33배와 페어 색 번호를 더한 값이다.
    • 포 오브 어 카인드: 같은 색 4개와 다른 색 1개다. 점수는 750750에 포 색 번호의 55배를 더한 값이다.
    • 파이브 오브 어 카인드: 5개가 모두 같은 색이다. 점수는 10001000에 그 색 번호의 1010배를 더한 값이다.
  • 종료 점수: qq번의 연산이 모두 유효하면 10001000점을 보너스로 받는다. 게임이 끝났을 때 보드가 완전히 비어 있으면 10 00010\,000점을 보너스로 받는다.

초기 상태, 특수 속성, 각 연산이 주어졌을 때 플레이어의 총점을 구하라.

입력

첫 줄에 네 정수 nn, mm, kk, qq가 주어진다 (2≤n,m≤502 \leq n, m \leq 50; m+n>4m + n > 4; 2≤k≤1002 \leq k \leq 100; 1≤q≤10001 \leq q \leq 1000).

다음 nn개 줄에는 각각 mm개의 정수 ai,ja_{i,j}가 주어진다. 위에서 아래, 왼쪽에서 오른쪽 순서의 초기 색이다 (1≤ai,j≤k1 \leq a_{i,j} \leq k).

그다음 nn개 줄에는 각각 mm개의 정수 bi,jb_{i,j}가 주어진다. 초기 특수 속성이며, 00은 특수 속성이 없음을 뜻한다 (0≤bi,j≤60 \leq b_{i,j} \leq 6).

마지막 qq개 줄에는 각각 네 양의 정수 x1x_1, y1y_1, x2x_2, y2y_2가 주어진다. (x1,y1)(x_1, y_1)의 조각과 (x2,y2)(x_2, y_2)의 조각을 서로 바꾸라는 뜻이다 (1≤x1,x2≤n1 \leq x_1, x_2 \leq n; 1≤y1,y2≤m1 \leq y_1, y_2 \leq m).

초기 상태에서는 바로 제거가 일어나는 상황이 없다.

출력

게임이 끝났을 때의 총점을 나타내는 정수를 한 줄에 출력한다.

힌트

각 연산 후 처음 세 종류 점수의 합은 차례로 315315, 417417, 429429, 435435, 482482이다. 5번째 연산 후에 패턴 점수를 계산한다. 최적의 패턴은 (1 2 4 2 4)(1\ 2\ 4\ 2\ 4)이며, 점수는 200+4⋅2+2⋅1=210200 + 4 \cdot 2 + 2 \cdot 1 = 210이다. 게임이 끝나면 두 종류의 종료 보너스를 모두 받아 총점은 11 69211\,692이다.

예제3

  1. 예제 1

    입력
    8 8 5 5
    1 1 5 1 5 4 5 3
    2 1 2 2 5 4 3 2
    1 4 1 4 2 1 5 4
    2 1 5 5 2 1 4 4
    2 3 5 2 3 4 2 2
    4 2 4 3 3 2 4 5
    1 3 4 3 5 2 4 3
    3 4 2 5 2 1 1 2
    0 0 0 0 0 0 0 0
    2 0 0 0 0 0 0 0
    0 0 0 0 5 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 6 0 0 3 1
    0 0 0 0 3 0 0 0
    0 0 0 0 0 0 1 4
    3 2 4 2
    5 4 5 5
    7 2 7 3
    8 5 8 6
    6 7 6 8
    
    예상 출력
    11692
    
  2. 예제 2

    입력
    8 8 5 8
    1 1 5 1 5 4 5 3
    2 1 2 2 5 4 3 2
    1 4 1 4 2 1 5 4
    2 1 5 5 2 1 4 4
    2 3 5 2 3 4 2 2
    4 2 4 3 3 2 4 5
    1 3 4 3 5 2 4 3
    3 4 2 5 2 1 1 2
    0 0 0 0 0 0 0 0
    2 0 0 0 0 0 0 0
    0 0 0 0 5 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 6 0 0 3 1
    0 0 0 0 3 0 0 0
    0 0 0 0 0 0 0 0
    1 1 2 2
    3 2 4 2
    3 2 3 3
    4 2 4 3
    5 4 5 5
    7 2 7 3
    8 5 8 6
    6 7 6 8
    
    예상 출력
    684
    
  3. 예제 3

    입력
    5 5 2 1
    1 1 2 1 1
    1 1 2 1 1
    2 2 1 2 2
    1 1 2 1 1
    1 1 2 1 1
    0 0 0 0 0
    0 0 0 0 0
    0 0 0 0 0
    0 0 0 0 0
    0 0 0 0 0
    3 3 4 3
    
    예상 출력
    3023