A - Shuffle and mod K

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 500

問題文

長さ N の整数列 A=(A_1,A_2,\dots,A_N) が与えられます。

あなたは A を自由に並び替えることが出来ます。並び替えた後の \sum_{i=1}^{N-1} ((A_{i+1} - A_i) \bmod K) としてあり得る最大値を求めてください。

ここで、x \bmod K とは 0 \le y < K かつ x - yK の倍数になる整数 y のことを指します。例えば、-3 \bmod 8 = 5,9 \bmod 6 = 3 となります。

制約

  • 2 \le N \le 2 \times 10^5
  • 1 \le K \le 10^9
  • 0 \le A_i < K

入力

入力は以下の形式で標準入力から与えられる。

N K
A_1 A_2 \dots A_N

出力

答えを出力せよ。


入力例 1

3 4
0 1 2

出力例 1

6

最適な例として、A = (2,1,0) と並び替えると (1 - 2) \bmod 4 + (0 - 1) \bmod 4 = 3 + 3 = 6 が達成できます。


入力例 2

7 123
11 34 56 0 32 100 78

出力例 2

638

Score : 500 points

Problem Statement

You are given an integer sequence A=(A_1,A_2,\dots,A_N) of length N.

You can rearrange A freely. Find the maximum value that \sum_{i=1}^{N-1} ((A_{i+1} - A_i) \bmod K) can take after rearranging.

Here, x \bmod K denotes the integer y such that 0 \le y < K and x - y is a multiple of K. For example, -3 \bmod 8 = 5, and 9 \bmod 6 = 3.

Constraints

  • 2 \le N \le 2 \times 10^5
  • 1 \le K \le 10^9
  • 0 \le A_i < K

Input

The input is given from Standard Input in the following format:

N K
A_1 A_2 \dots A_N

Output

Print the answer.


Sample Input 1

3 4
0 1 2

Sample Output 1

6

One optimal solution is to rearrange A into (2,1,0) to achieve (1 - 2) \bmod 4 + (0 - 1) \bmod 4 = 3 + 3 = 6.


Sample Input 2

7 123
11 34 56 0 32 100 78

Sample Output 2

638
B - Erase and Insert

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 700

問題文

(1,2,\dots,N) の順列 P が与えられます。また、(1,2,\dots,N) の順列 Q=(1,2,\dots,N) があります。

Q に以下の操作を i=1,2,\dots,N の順で行います。

  • Q から i を削除し、Qi1 個自由な場所に挿入する。

N 個の操作が終わった後に P,Q が等しくなるような操作方法の個数を 10^9+7 で割ったあまりを求めてください。

制約

  • 1 \le N \le 5000
  • P(1,2,\dots,N) の順列

入力

入力は以下の形式で標準入力から与えられる。

N
P_1 P_2 \dots P_N

出力

答えを出力せよ。


入力例 1

3
1 2 3

出力例 1

5

例えば、以下のような操作をすると最終的に Q = (1,2,3) となります。

  • Q=(1,2,3) から 1 を削除し、2,3 の間に 1 を挿入する。Q=(2,1,3) となる。
  • Q=(2,1,3) から 2 を削除し、Q の末尾に 2 を挿入する。Q=(1,3,2) となる。
  • Q=(1,3,2) から 3 を削除し、Q の末尾に 3 を挿入する。Q=(1,2,3) となる。

この例を合わせて、最終的に Q=(1,2,3) となる操作方法は 5 個あります。


入力例 2

4
2 4 1 3

出力例 2

11

入力例 3

15
7 5 14 10 4 2 3 6 8 11 12 1 15 13 9

出力例 3

306264

入力例 4

30
15 19 13 11 22 27 21 25 1 12 30 28 16 26 10 14 20 2 5 7 23 4 17 6 29 3 18 9 8 24

出力例 4

33525150

Score : 700 points

Problem Statement

You are given a permutation P of (1,2,\dots,N). There is also a permutation Q=(1,2,\dots,N) of (1,2,\dots,N).

Perform the following operation on Q for i=1,2,\dots,N in this order.

  • Remove i from Q and insert i into any one position in Q.

Find the number, modulo (10^9+7), of ways to perform N operations such that P and Q are equal after all operations.

Constraints

  • 1 \le N \le 5000
  • P is a permutation of (1,2,\dots,N).

Input

The input is given from Standard Input in the following format:

N
P_1 P_2 \dots P_N

Output

Print the answer.


Sample Input 1

3
1 2 3

Sample Output 1

5

For example, the following operations result in Q = (1,2,3).

  • Remove 1 from Q=(1,2,3) and insert it between 2 and 3, making Q = (2,1,3).
  • Remove 2 from Q=(2,1,3) and insert it at the end of Q, making Q = (1,3,2).
  • Remove 3 from Q=(1,3,2) and insert it at the end of Q, making Q = (1,2,3).

Including this example, five ways to perform operations result in Q=(1,2,3).


Sample Input 2

4
2 4 1 3

Sample Output 2

11

Sample Input 3

15
7 5 14 10 4 2 3 6 8 11 12 1 15 13 9

Sample Output 3

306264

Sample Input 4

30
15 19 13 11 22 27 21 25 1 12 30 28 16 26 10 14 20 2 5 7 23 4 17 6 29 3 18 9 8 24

Sample Output 4

33525150
C - Avoid Half Sum

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 900

問題文

長さ N の非負整数列 A=(A_1,A_2,\dots,A_N) が与えられます。ここで、 S=\sum_{i=1}^{N} A_i は偶数です。

以下の条件を満たす長さ N の非負整数列の組 B=(B_1,B_2,\dots,B_N),\ C=(C_1,C_2,\dots,C_N) が存在するか判定してください。

  • i=1,2,\dots,N に対し B_i+C_i=A_i が成り立つ
  • i=1,2,\dots,N に対し X_i=B_i または X_i=C_i が成り立つ任意の長さ N の整数列 X=(X_1,X_2,\dots,X_N) に対し、 \sum_{i=1}^{N} X_i \neq \frac{S}{2} である

T 個のテストケースについて答えてください。

制約

  • 1 \leq T
  • 1 \leq N \leq 2 \times 10^5
  • 1 \leq A_i \leq 10^9
  • \sum_{i=1}^{N} A_i は偶数
  • 1 つの入力に含まれるテストケースについて、 N の総和は 2 \times 10^5 以下
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

T
\mathrm{case}_1
\vdots
\mathrm{case}_T

各ケースは以下の形式で与えられる。

N
A_1 A_2 \dots A_N

出力

T 行出力せよ。i 行目には i 番目のテストケースについて、条件を満たすものが存在する場合は Yes を、存在しない場合は No を出力せよ。


入力例 1

3
3
1 2 3
6
1 1 2 2 3 3
4
1 1 1000000000 1000000000

出力例 1

Yes
No
Yes

1 つ目のテストケースについて、 B=(1,1,3), C=(0,1,0) とすると条件を満たします。

2 つ目のテストケースについて、条件を満たす B,C の組は存在しません。

Score : 900 points

Problem Statement

You are given a sequence of non-negative integers A=(A_1,A_2,\dots,A_N) of length N. Here, S=\sum_{i=1}^{N} A_i is even.

Determine whether there is a pair of sequences of non-negative integers of length N, B=(B_1,B_2,\dots,B_N) and C=(C_1,C_2,\dots,C_N), that satisfy the following conditions:

  • B_i+C_i=A_i for i=1,2,\dots,N.
  • \sum_{i=1}^{N} X_i \neq \frac{S}{2} for every sequence of integers X=(X_1,X_2,\dots,X_N) of length N where X_i=B_i or X_i=C_i for i=1,2,\dots,N.

Solve T test cases.

Constraints

  • 1 \leq T
  • 1 \leq N \leq 2 \times 10^5
  • 1 \leq A_i \leq 10^9
  • \sum_{i=1}^{N} A_i is even.
  • The sum of N over all test cases in a single input is at most 2 \times 10^5.
  • All input values are integers.

Input

The input is given from Standard Input in the following format:

T
\mathrm{case}_1
\vdots
\mathrm{case}_T

Each case is given in the following format:

N
A_1 A_2 \dots A_N

Output

Print T lines. The i-th line should contain Yes if there is a pair of sequences B and C that satisfy the conditions for the i-th test case, and No otherwise.


Sample Input 1

3
3
1 2 3
6
1 1 2 2 3 3
4
1 1 1000000000 1000000000

Sample Output 1

Yes
No
Yes

For the first test case, B=(1,1,3) and C=(0,1,0) satisfy the conditions.

For the second test case, no pair of B and C satisfies the conditions.

D - Not Intersect

Time Limit: 3 sec / Memory Limit: 1024 MB

配点 : 900

問題文

ある平面上に円周が書かれています。この円周上には N 個の相異なる点があり、それらには時計回りに 1,2,\dots,N と番号が付いています。

N 個の点のうち異なる 2 点を結ぶような線分は \frac{N(N-1)}{2} 本ありますが、このうち M 本を選んで書きます。どの 2 本の線分も端点以外では交わらないような方法の個数を 10^9+7 で割ったあまりを求めてください。

制約

  • 1 \le N \le 10^7
  • 0 \le M \le \frac{N(N-1)}{2}

入力

入力は以下の形式で標準入力から与えられる。

N M

出力

答えを出力せよ。


入力例 1

4 2

出力例 1

14

左、真ん中の例は条件を満たしています。(端点では交わってもいいことに注意してください。)

右の例は、2 本の辺が端点以外で交わっているため不適です。この例以外の \binom{6}{2} - 1 = 14 通りは全て条件を満たします。


入力例 2

6 3

出力例 2

295

入力例 3

2023 1217

出力例 3

10811951

入力例 4

1234321 2345432

出力例 4

789452255

Score : 900 points

Problem Statement

There is a circle on a plane. It has N distinct points on its circumference, numbered 1,2,\dots,N in clockwise order.

There are \frac{N(N-1)}{2} line segments that can be drawn by connecting two different points among the N points; you will choose and draw M of these segments. Find the number, modulo (10^9+7), of ways to draw M segments such that no two of them intersect at a point other than their endpoints.

Constraints

  • 1 \le N \le 10^7
  • 0 \le M \le \frac{N(N-1)}{2}

Input

The input is given from Standard Input in the following format:

N M

Output

Print the answer.


Sample Input 1

4 2

Sample Output 1

14

The following examples on the left and in the middle satisfy the conditions. (Note that it is acceptable for the segments to intersect at their endpoints.)

The example on the right is unsuitable because two edges intersect at a point other than their endpoints. All other \binom{6}{2} - 1 = 14 ways satisfy the conditions.


Sample Input 2

6 3

Sample Output 2

295

Sample Input 3

2023 1217

Sample Output 3

10811951

Sample Input 4

1234321 2345432

Sample Output 4

789452255
E - One Two Three

Time Limit: 5 sec / Memory Limit: 1024 MB

配点 : 1500

問題文

長さ N の正整数列 A=(A_1,A_2,\dots,A_N)B=(B_1,B_2,\dots,B_N) が与えられます。

i 番目の要素 C_iA_i または B_i であるような正整数列 C=(C_1,C_2,\dots,C_N) の転倒数としてあり得る最小値を求めてください。

T 個のテストケースについて答えてください。

制約

  • 1 \le T
  • 1 \le N \le 5 \times 10^5
  • 1 \le A_i,B_i \le \color{red}{\boldsymbol{3}}
  • 1 個の入力に含まれるテストケースについて、それらの N の総和は 5 \times 10^5 を超えない。

入力

入力は以下の形式で標準入力から与えられる。

T
\mathrm{case}_1
\mathrm{case}_2
\vdots
\mathrm{case}_T

ここで、\mathrm{case}_i とは i 個目のテストケースである。各テストケースは以下の形式で与えられる。

N
A_1 A_2 \dots A_N
B_1 B_2 \dots B_N

出力

答えを出力せよ。


入力例 1

8
3
2 1 1
3 3 2
5
2 1 3 2 2
1 2 1 2 3
8
2 1 3 3 3 1 2 2
1 2 3 1 2 1 3 2
10
1 3 2 1 1 3 2 2 2 2
2 3 1 1 1 1 3 1 3 3
12
2 1 1 3 3 1 3 3 2 2 2 1
3 1 1 3 3 1 3 2 3 2 1 2
15
1 3 1 3 3 2 2 1 2 3 3 3 1 1 3
3 3 3 2 3 2 1 3 2 1 2 2 3 3 3
18
3 1 1 3 3 2 1 1 2 3 2 1 3 3 3 2 2 3
1 1 3 2 1 3 1 2 1 2 3 2 2 1 3 1 3 3
20
2 2 3 1 1 3 2 3 3 1 3 1 2 1 2 2 1 2 3 2
1 1 1 3 3 1 1 3 2 2 1 1 1 1 1 2 2 2 2 1

出力例 1

1
0
6
6
20
9
5
17

1 個目のテストケースの場合の最適な例として、C=(2,3,2) とすると転倒数が 1 になります。

2 個目のテストケースの場合の最適な例として、C=(1,1,1,2,3) とすると転倒数が 0 になります。

Score : 1500 points

Problem Statement

You are given two sequences of positive integers of length N, A=(A_1,A_2,\dots,A_N) and B=(B_1,B_2,\dots,B_N).

Find the minimum possible inversion number of a sequence of positive integers C=(C_1,C_2,\dots,C_N) such that the i-th element C_i is A_i or B_i.

Solve T test cases.

Constraints

  • 1 \le T
  • 1 \le N \le 5 \times 10^5
  • 1 \le A_i,B_i \le \color{red}{\boldsymbol{3}}
  • The sum of N for all test cases in a single input is at most 5 \times 10^5.

Input

The input is given from Standard Input in the following format:

T
\mathrm{case}_1
\mathrm{case}_2
\vdots
\mathrm{case}_T

Here, \mathrm{case}_i represents the i-th test case. Each test case is given in the following format:

N
A_1 A_2 \dots A_N
B_1 B_2 \dots B_N

Output

Print the answer.


Sample Input 1

8
3
2 1 1
3 3 2
5
2 1 3 2 2
1 2 1 2 3
8
2 1 3 3 3 1 2 2
1 2 3 1 2 1 3 2
10
1 3 2 1 1 3 2 2 2 2
2 3 1 1 1 1 3 1 3 3
12
2 1 1 3 3 1 3 3 2 2 2 1
3 1 1 3 3 1 3 2 3 2 1 2
15
1 3 1 3 3 2 2 1 2 3 3 3 1 1 3
3 3 3 2 3 2 1 3 2 1 2 2 3 3 3
18
3 1 1 3 3 2 1 1 2 3 2 1 3 3 3 2 2 3
1 1 3 2 1 3 1 2 1 2 3 2 2 1 3 1 3 3
20
2 2 3 1 1 3 2 3 3 1 3 1 2 1 2 2 1 2 3 2
1 1 1 3 3 1 1 3 2 2 1 1 1 1 1 2 2 2 2 1

Sample Output 1

1
0
6
6
20
9
5
17

For the first test case, an optimal solution is C=(2,3,2) with the inversion number of 1.

For the second test case, an optimal solution is C=(1,1,1,2,3) with the inversion number of 0.

F - Always Perfect

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 1600

問題文

偶数 N および素数 M が与えられます。

1 から N までの番号が付いた N 頂点からなる単純連結無向グラフ G のうち、以下の条件を満たすものの個数を M で割った余りを求めてください。

  • G の任意の全域木 T に対し、T 上の完全マッチングが存在する。
グラフの完全マッチングとは? グラフ G に対し、 G の辺からなる集合 E であって、グラフ上のすべての頂点 v に対し、 v を端点とする辺がちょうど 1E に含まれるようなものを G 上の完全マッチングとよびます。

制約

  • 2 \leq N \leq 500
  • 10^8 \leq M \leq 10^9
  • N は偶数
  • M は素数
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

N M

出力

答えを出力せよ。


入力例 1

4 998244353

出力例 1

15

例えば下図で示された 2 つのグラフについて、左側のグラフは条件を満たします。一方、右側のグラフは赤い太線で示された 3 辺からなる全域木上には完全マッチングが存在しないため、条件を満たしません。


入力例 2

10 998244353

出力例 2

128792160

入力例 3

300 923223991

出力例 3

359143490

Score : 1600 points

Problem Statement

You are given an even number N and a prime number M.

Find the number, modulo M, of simple connected undirected graphs G with N vertices numbered 1 to N that satisfy the following condition:

  • For every spanning tree T of G, there is a perfect matching in T.
What is a perfect matching in a graph? For a graph G, a set of edges E from G is called a perfect matching in G if, for every vertex v in the graph, E contains exactly one edge with v as an endpoint.

Constraints

  • 2 \leq N \leq 500
  • 10^8 \leq M \leq 10^9
  • N is even.
  • M is prime.
  • All input values are integers.

Input

The input is given from Standard Input in the following format:

N M

Output

Print the answer.


Sample Input 1

4 998244353

Sample Output 1

15

For example, among the two graphs shown in the figure below, the graph on the left satisfies the condition. On the other hand, the graph on the right does not because there is no perfect matching in the spanning tree with the three edges shown in bold red.


Sample Input 2

10 998244353

Sample Output 2

128792160

Sample Input 3

300 923223991

Sample Output 3

359143490