점봉은 무거워

시간 제한5초메모리 제한1024 MB

요약
Q번의 점수 교환마다 100, 500, 1000, 5000,...점봉을 규칙에 따라 교환할 때 오가는 점봉 개수의 최솟값을 구해 출력한다.
난이도

어려움10점 중 8점

유형
그리디, 수학, 시뮬레이션
정답자
아직 제출이 없습니다

문제

preview

마작 세트의 구성품 중 하나인 점봉點棒은 각 플레이어의 점수를 나타내는 기다란 막대입니다. 마작 세트에는 다양한 종류의 점봉이 많이 들어 있습니다.

여러분은 마작 세트를 막 구입했습니다. 이 마작 세트는 특이해서, 다음과 같이 총 2121종류의 점봉이 들어 있습니다.

  • 100100, 1,0001\\,000, 10,00010\\,000, …\dots, 101210^{12}점봉.
  • 500500, 5,0005\\,000, 50,00050\\,000, …\dots, 5×10115 \times 10^{11}점봉.

마작을 치는 44명의 플레이어 11, 22, 33, 44는 같은 점봉 조합을 가지고 게임을 시작합니다.

게임을 플레이하다 보면, 점수를 교환할 일이 생깁니다. 플레이어들은 점수를 교환해야 할 때 점봉을 주고받습니다. 다만 이 마작 세트의 점봉은 상당히 무겁기 때문에, 플레이어들이 점봉을 주고받을 때 정해진 규칙에 따라 점봉을 주고받으려고 합니다.

만약 플레이어 AA가 BB에게 XX점을 주어야 하는 상황이라고 합시다.

  1. AA가 BB에게 준 점봉의 점수 합을 S_AS\_A, BB가 AA에게 준 점봉의 점수 합을 S_BS\_B라고 하면, S_A−S_B=XS\_A - S\_B = X를 만족해야 합니다.
  2. 1번 조건을 만족하는 점봉 교환 방법이 여러 개라면, AA가 BB에게 준 점봉의 개수를 N_AN\_A, B가 A에게 준 점봉의 개수를 N_BN\_B라고 했을 때, N_A+N_BN\_A + N\_B가 그 중 최소가 되어야 합니다.
  3. 1번과 2번 조건을 만족하는 점봉 교환 방법이 여러 개라면, N_BN\_B가 그 중 최소가 되어야 합니다.
  4. 1번, 2번, 그리고 3번 조건을 만족하는 점봉 교환 방법이 여러 개라면, S_BS\_B가 그 중 최소가 되어야 합니다.

규칙에 따라 점봉을 주고받는 방법이 존재한다면 유일함을 증명할 수 있습니다. 방법이 유일하다는 것은, 두 개의 방법에 대해 어떤 NN이 존재해 NN점봉의 교환 개수가 달라지는 경우가 없음을 뜻합니다.

플레이어들의 마작 기록이 주어졌을 때, 각 점수 교환에 몇 개의 점봉이 오갔는지를 구해 주세요.

입력

첫 번째 줄과 두 번째 줄에는 각 점봉의 초기 개수를 의미하는 정수들이 공백으로 구분되어 주어집니다.

  • 첫 번째 줄에는 A_2,A_3,…,A_12A\_2, A\_3, \dots, A\_{12}가 주어집니다. A_iA\_i는 한 플레이어의 초기 10i10^i점봉의 개수를 뜻합니다. (0≤A_i≤106)(0 \le A\_i \le 10^6)
  • 두 번째 줄에는 B_2,B_3,…,B_11B\_2, B\_3, \dots, B\_{11}이 주어집니다. B_iB\_i는 한 플레이어의 초기 5×10i5 \times 10^i점봉의 개수를 뜻합니다. (0≤B_i≤106)(0 \le B\_i \le 10^6)

세 번째 줄에는 게임을 하면서 일어난 점수 교환의 수 QQ가 주어집니다. (1≤Q≤105)(1 \le Q \le 10^5)

다음 QQ개의 줄에는 점수 교환들의 정보가 주어집니다.

  • QQ개의 줄 중 ii번째 줄에는 ii번째로 일어난 점수 교환의 정보를 의미하는 정수 AA, BB, XX가 공백으로 구분되어 주어집니다. 이는 플레이어 AA가 BB에게 XX점을 주어야 한다는 뜻입니다. (1≤A,B≤4;(1 \le A,B \le 4; A≠B;A\ne B; 100≤X≤9×1018;100 \le X \le 9 \times 10^{18}; X≡0(mod100))X \equiv 0 \pmod{100})

규칙에 따라 점수를 교환할 경우 점봉을 주고받는 방법이 반드시 존재합니다. 각 점수 교환은 플레이어들이 가지고 있는 점봉의 개수를 바꾼다는 점에 유의합니다.

출력

QQ줄을 출력합니다. ii번째 줄에는 ii번째 점수 교환에서 오간 점봉의 개수를 출력합니다. 구체적으로는, N_A+N_BN\_A+N\_B를 출력합니다.

예제1

  1. 예제 1

    입력
    5 4 1 0 0 0 0 0 0 0 0
    1 2 0 0 0 0 0 0 0 0
    4
    1 2 500
    1 4 1500
    3 2 1500
    4 3 500
    
    예상 출력
    1
    3
    2
    5