Game With Triangles

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

요약
서로 다른 두 평행선 위의 점들에서 교차하지 않는 삼각형을 최대한 많이 만들고, 정확히 k번의 삼각형 선택으로 얻는 최대 점수를 구합니다.
난이도

어려움10점 중 8점

유형
정렬, 그리디, 동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

Even Little John needs money to buy a house. But he recently lost his job; how will he earn money now? Of course, by playing a game that gives him money as a reward! Oh well, maybe not those kinds of games you are thinking about.

There are n+mn+m distinct points (a_1,0),(a_2,0),…,(a_n,0),(b_1,2),(b_2,2),…,(b_m,2)(a\_1,0), (a\_2,0), \ldots, (a\_{n},0), (b\_1,2), (b\_2,2), \ldots, (b\_{m},2) on the plane. Initially, your score is 00. To increase your score, you can perform the following operation:

  • Choose three distinct points which are not collinear;
  • Increase your score by the area of the triangle formed by these three points;
  • Then, erase the three points from the plane.

An instance of the game, where the operation is performed twice.

Let k_max⁡k\_{\max} be the maximum number of operations that can be performed. For example, if it is impossible to perform any operation, k_max⁡k\_\max is 00. Additionally, define f(k)f(k) as the maximum possible score achievable by performing the operation exactly kk times. Here, f(k)f(k) is defined for all integers kk such that 0≤k≤k_max⁡0 \le k \le k\_{\max}.

Find the value of k_max⁡k\_{\max}, and find the values of f(x)f(x) for all integers x=1,2,…,k_max⁡x=1,2,\ldots,k\_{\max} independently.

입력

Each test contains multiple test cases. The first line contains the number of test cases tt (1≤t≤3⋅1041 \le t \le 3 \cdot 10^4). The description of the test cases follows.

The first line of each test case contains two integers nn and mm (1≤n,m≤2⋅1051 \le n,m \le 2 \cdot 10^5).

The second line of each test case contains nn pairwise distinct integers a_1,a_2,…,a_na\_1,a\_2,\ldots,a\_{n} --- the points on y=0y=0 (−109≤a_i≤109-10^9 \le a\_i \le 10^9).

The third line of each test case contains mm pairwise distinct integers b_1,b_2,…,b_mb\_1,b\_2,\ldots,b\_{m} --- the points on y=2y=2 (−109≤b_i≤109-10^9 \le b\_i \le 10^9).

It is guaranteed that both the sum of nn and the sum of mm over all test cases do not exceed 2⋅1052 \cdot 10^5.

출력

For each test case, given that the maximum number of operations is k_max⁡k\_{\max}, you must output at most two lines:

  • The first line contains the value of k_max⁡k\_{\max};
  • The second line contains k_max⁡k\_{\max} integers denoting f(1),f(2),…,f(k_max⁡)f(1),f(2),\ldots,f(k\_{\max}). You are allowed to omit this line if k_max⁡k\_{\max} is 00.

Note that under the constraints of this problem, it can be shown that all values of f(x)f(x) are integers no greater than 101610^{16}.

힌트

On the first test case, there are 1+3=41+3=4 points (0,0),(0,2),(1,2),(−1,2)(0,0),(0,2),(1,2),(-1,2).

It can be shown that you cannot perform two or more operations. The value of k_max⁡k\_{\max} is 11, and you are only asked for the value of f(1)f(1).

You can choose (0,0)(0,0), (−1,2)(-1,2), and (1,2)(1,2) as the three vertices of the triangle. After that, your score is increased by the area of the triangle, which is 22. Then, the three points are erased from the plane. It can be shown that the maximum value of your score after performing one operation is 22. Therefore, the value of f(1)f(1) is 22.

On the fifth test case, there are 8+2=108+2=10 points.

It can be shown that you cannot perform three or more operations. The value of k_max⁡k\_{\max} is 22, and you are asked for the values f(1)f(1) and f(2)f(2).

To maximize the score with only one operation, you can choose three points (198,872,582,0)(198\\,872\\,582,0), (−1,000,000,000,2)(-1\\,000\\,000\\,000,2), and (1,000,000,000,2)(1\\,000\\,000\\,000,2). Then, the three points are erased from the plane. It can be shown that the maximum value of your score after performing one operation is 2,000,000,0002\\,000\\,000\\,000. Therefore, the value of f(1)f(1) is 2,000,000,0002\\,000\\,000\\,000.

To maximize the score with exactly two operations, you can choose the following sequence of operations.

  • Choose three points (−509,489,796,0)(-509\\,489\\,796,0), (553,177,666,0)(553\\,177\\,666,0), and (−1,000,000,000,2)(-1\\,000\\,000\\,000,2). The three points are erased.
  • Choose three points (−400,714,529,0)(-400\\,714\\,529,0), (564,040,265,0)(564\\,040\\,265,0), and (1,000,000,000,2)(1\\,000\\,000\\,000,2). The three points are erased.

Then, the score after two operations becomes 2,027,422,2562\\,027\\,422\\,256. It can be shown that the maximum value of your score after performing exactly two operations is 2,027,422,2562\\,027\\,422\\,256. Therefore, the value of f(2)f(2) is 2,027,422,2562\\,027\\,422\\,256.

예제1

  1. 예제 1

    입력
    5
    1 3
    0
    0 1 -1
    2 4
    0 100
    -100 -50 0 50
    2 4
    0 1000
    -100 -50 0 50
    6 6
    20 1 27 100 43 42
    100 84 1 24 22 77
    8 2
    564040265 -509489796 469913620 198872582 -400714529 553177666 131159391 -20796763
    -1000000000 1000000000
    
    예상 출력
    1
    2
    2
    150 200
    2
    1000 200
    4
    99 198 260 283
    2
    2000000000 2027422256