alexjercan/bugnet huggingface dataset:
Share the Ruins Preservation

Two organizations International Community for Preservation of Constructions (ICPC) and Japanese Archaeologist Group (JAG) engage in ruins preservation. Recently, many ruins were found in a certain zone. The two organizations decided to share the preservation of the ruins by assigning some of the ruins to ICPC and the other ruins to JAG.

Now, ICPC and JAG make a rule for assignment as follows:

Draw a vertical straight line from the north to the south, avoiding to intersect ruins.

Ruins located to the west of the line are preserved by ICPC. On the other hand, ruins located to the east of the line are preserved by JAG. (It is possible that no ruins are located to the east/west of the line; in this case, ICPC/JAG will preserve no ruins.)

A problem is where to draw a straight line. For each organization, the way to preserve its assigned ruins is to make exactly one fence such that all the assigned ruins are in the region surrounded by the fence. Furthermore, they should minimize the length of such a fence for their budget. If the surrounded areas are vast, expensive costs will be needed to maintain the inside of areas. Therefore, they want to minimize the total preservation cost, i.e. the sum of the areas surrounded by two fences. Your task is to write a program computing the minimum sum of the areas surrounded by two fences, yielded by drawing an appropriate straight line.

Input

The input consists of a single test case.

$N$

$x_1$ $y_1$

$x_2$ $y_2$

...

$x_N$ $y_N$

The first line contains an integer $N$ ($1 \leq N \leq 100,000$), which is the number of founded ruins. The following $N$ lines represent the location of the ruins. The $i$-th line of them consists of two integers $x_i$ and $y_i$, which indicate the location of the $i$-th ruin is $x_i$ east and $y_i$ north from a certain location in the zone. You can assume the following things for the ruins:

$-10^9 \leq x_i, y_i \leq 10^9$

You can ignore the sizes of ruins. That is, you can assume ruins are points.

No pair of ruins has the same location.

Output

Print the minimum total preservation cost yielded by drawing an appropriate straight line. You should round off the cost to the nearest integer.

Sample Input 1

8
-10 0
-10 5
-5 5
-5 0
10 0
10 -5
5 -5
5 0

Output for the Sample Input 1

50

Sample Input 2

5
0 0
0 1
0 2
1 0
1 1

Output for the Sample Input 2

0

Sample Input 3

6
1 5
1 6
0 5
0 -5
-1 -5
-1 -6

Output for the Sample Input 3

6

Sample Input 4

10
2 5
4 6
9 5
8 8
1 3
6 4
5 9
7 3
7 7
3 9

Output for the Sample Input 4

17
Multisect

We are developing the world's coolest AI robot product. After the long struggle, we finally managed to send our product at revision $R_{RC}$ to QA team as a release candidate. However, they reported that some tests failed! Because we were too lazy to set up a continuous integration system, we have no idea when our software corrupted. We only know that the software passed all the test at the past revision $R_{PASS}$. To determine the revision $R_{ENBUG}$ ($R_{PASS} < R_{ENBUG} \leq R_{RC}$) in which our software started to fail, we must test our product revision-by-revision.

Here, we can assume the following conditions:

When we test at the revision $R$, the test passes if $R < R_{ENBUG}$, or fails otherwise.

It is equally possible, which revision between $R_{PASS} + 1$ and $R_{RC}$ is $R_{ENBUG}$.

From the first assumption, we don't need to test all the revisions. All we have to do is to find the revision $R$ such that the test at $R - 1$ passes and the test at $R$ fails. We have $K$ testing devices. Using them, we can test at most $K$ different revisions simultaneously. We call this "parallel testing". By the restriction of the testing environment, we cannot start new tests until a current parallel testing finishes, even if we don't use all the $K$ devices.

Parallel testings take some cost. The more tests fail, the more costly the parallel testing becomes. If $i$ tests fail in a parallel testing, its cost is $T_i$ ($0 \leq i \leq K$). And if we run parallel testings multiple times, the total cost is the sum of their costs.

Of course we want to minimize the total cost to determine $R_{ENBUG}$, by choosing carefully how many and which revisions to test on each parallel testing. What is the minimum expected value of the total cost if we take an optimal strategy?

Input

The input consists of a single test case with the following format.

$R_{PASS}$ $R_{RC}$ $K$

$T_0$ $T_1$ ... $T_K$

$R_{PASS}$ and $R_{RC}$ are integers that represent the revision numbers of our software at which the test passed and failed, respectively. $1 \leq R_{PASS} < R_{RC} \leq 1,000$ holds. $K$ ($1 \leq K \leq 30$) is the maximum number of revisions we can test in a single parallel testing. $T_i$ is an integer that represents the cost of a parallel testing in which $i$ tests fail ($0 \leq i \leq K$). You can assume $1 \leq T_0 \leq T_1 \leq ... \leq T_K \leq 100,000$.

Output

Output the minimum expected value of the total cost. The output should not contain an error greater than 0.0001.

Sample Input 1

1 10 2
1 1 1

Output for the Sample Input 1

2.0

Sample Input 2

1 100 1
100 100

Output for the Sample Input 2

670.7070707

Sample Input 3

100 200 4
1 1 2 2 3

Output for the Sample Input 3

4.6400000

Sample Input 4

2 3 4
1 2 3 4 5

Output for the Sample Input 4

0.0

Sample Input 5

998 1000 4
10 100 1000 10000 100000

Output for the Sample Input 5

55.0
Compressed Formula

You are given a simple, but long formula in a compressed format. A compressed formula is a sequence of $N$ pairs of an integer $r_i$ and a string $s_i$, which consists only of digits ('0'-'9'), '+', '-', and '*'. To restore the original formula from a compressed formula, first we generate strings obtained by repeating $s_i$ $r_i$ times for all $i$, then we concatenate them in order of the sequence.

You can assume that a restored original formula is well-formed. More precisely, a restored formula satisfies the following BNF:

<expression> := <term> | <expression> '+' <term> | <expression> '-' <term>
<term> := <number> | <term> * <number>
<number> := <digit> | <non-zero-digit> <number>
<digit> := '0' | <non-zero-digit>
<non-zero-digit> := '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'

Here, '+' means addition, '-' means subtraction, and '*' means multiplication of integers.

Your task is to write a program computing the answer of a given formula modulo 1,000,000,007, where $x$ modulo $m$ is a non-negative integer $r$ such that there exists an integer $k$ satisfying $x = km + r$ and $0 \leq r < m$; it is guaranteed that such $r$ is uniquely determined for integers $x$ and $m$.

Input

The input consists of a single test case.

$N$

$r_1$ $s_1$

$r_2$ $s_2$

...

$r_N$ $s_N$

The first line contains a single integer $N$ ($1 \leq N \leq 10^4$), which is the length of a sequence of a compressed formula. The following $N$ lines represents pieces of a compressed formula. The $i$-th line consists of an integer $r_i$ ($1 \leq r_i \leq 10^9$) and a string $s_i$ ($1 \leq |s_i| \leq 10$), where $t_i$ is the number of repetition of $s_i$, and $s_i$ is a piece of an original formula. You can assume that an original formula, restored from a given compressed formula by concatenation of repetition of pieces, satisfies the BNF in the problem statement.

Output

Print the answer of a given compressed formula modulo 1,000,000,007.

Sample Input 1

1
5 1

Output for the Sample Input 1

11111

Sample Input 2

2
19 2*
1 2

Output for the Sample Input 2

1048576

Sample Input 3

2
1 1-10
10 01*2+1

Output for the Sample Input 3

999999825

Sample Input 4

4
3 12+45-12
4 12-3*2*1
5 12345678
3 11*23*45

Output for the Sample Input 4

20008570
Non-redundant Drive

The people of JAG kingdom hate redundancy. For example, the N cities in JAG kingdom are connected with just $N - 1$ bidirectional roads such that any city is reachable from any city through some roads. Under the condition, the number of paths from a city to another city is exactly one for all pairs of the cities. This is a non-redundant road network :)

One day, you, a citizen of JAG kingdom, decided to travel as many cities in the kingdom as possible with a car. The car that you will use has an infinitely large tank, but initially the tank is empty. The fuel consumption of your car is 1 liter per 1 km, i.e. it consumes 1 liter of gasoline to move 1 km.

Each city has exactly one gas station, and you can supply $g_x$ liters of gasoline to your car at the gas station of the city $x$. Of course, you have a choice not to visit some of the gas stations in your travel. But you will not supply gasoline twice or more at the same gas station, because it is redundant. Each road in the kingdom has a distance between two cities: the distance of $i$-th road is $d_i$ km. You will not pass the same city or the same road twice or more, of course, because it is redundant.

If a quantity of stored gasoline becomes zero, the car cannot move, and hence your travel will end there. But then, you may concern about an initially empty tank. Don't worry. You can start at any gas station of the cities in the kingdom. Furthermore, each road directly connects the gas stations of the its two ends (because the spirit of non-redundancy avoids redundant moves in a city), you therefore can supply gasoline to your car even if your car tank becomes empty just when you arrive the city.

Your task is to write a program computing the maximum number of cities so that you can travel under your non-redundancy policy.

Input

The input consists of a single test case.

$N$

$g_1$ $g_2$ ... $g_N$

$a_1$ $b_1$ $d_1$

$a_2$ $b_2$ $d_2$

...

$a_{N-1}$ $b_{N-1}$ $d_{N-1}$

The first line contains an integer $N$ ($1 \leq N \leq 100,000$), which is the number of cities in JAG kingdom. The second line contains $N$ integers: the $i$-th of them is $g_i$ ($1 \leq g_i \leq 10,000$), the amount of gasoline can be supplied at the gas station of the city $i$. The following $N - 1$ lines give information of roads: the $j$-th line of them contains $a_j$ and $b_j$ , which indicates that the $j$-th road bidirectionally connects the cities $a_j$ and $b_j$ ($1 \leq a_j, b_j \leq N, a_j \ne b_j$) with distance $d_j$ ($1 \leq d_j \leq 10,000$). You can assume that all cities in the kingdom are connected by the roads.

Output

Print the maximum number of cities you can travel from any city under the constraint such that you can supply gasoline at most once per a gas station.

Sample Input 1

5
5 8 1 3 5
1 2 4
2 3 3
2 4 3
1 5 7

Output for the Sample Input 1

4

Sample Input 2

2
10 1
1 2 10

Output for the Sample Input 2

2

Sample Input 3

5
1 3 5 1 1
1 2 5
2 3 3
2 4 3
1 5 5

Output for the Sample Input 3

3
A: キャベツ / Cabbage

問題文

AOR イカちゃんは葉が $N$ 枚あるキャベツを手に入れた。
このキャベツの葉には外側から順に $1,\ldots,N$ の番号がついていて、$i$ 番目の葉の汚れ具合は $D_i$ である。
この値が大きいほど汚れ具合が酷いことを表す。
AOR イカちゃんはこのキャベツの葉を料理に使うため、廃棄する候補の汚い葉を以下の手順に従って選ぶことにした。

廃棄候補を空に初期化する。

まだ調べていない最も外側の葉に注目する。全て調べ終わっている場合は終了する。

その葉の汚れ具合が $A$ 以上であれば廃棄候補に加え、 2. に戻る。そうでなければ終了する。

しかし、この操作を行った結果、料理に使える葉が極端に少なくなってしまう場合があることに気がついた。
そこで、上記の操作後に捨てる葉を考えなおし、以下の操作を行うことにした。

廃棄候補でない葉が $M$ 枚未満であれば 2. に進む。そうでなければ終了する。

廃棄候補の葉のうちまだ調べていない最も内側の葉に注目する。廃棄候補の葉がない場合は終了する。

その葉の汚れ具合が $B$ 以下であれば廃棄候補から外し、 2. に戻る。
そうでなければ廃棄候補に残っている葉を全て廃棄し、終了する。

これらの操作を行ったとき、最終的に捨てる葉の枚数を求めよ。

入力

$N \ M \ A \ B$

$D_{1} \ D_{2} \ \cdots \ D_{N}$

入力の制約

$1 \leq N \leq 1000$

$0 \leq M \leq N$

$1 \leq A \leq B \leq 1000$

$1 \leq D_{i} \leq 1000$

出力

最終的に捨てる葉の数を出力せよ。

サンプル

サンプル入力1

5 3 6 9
9 7 5 3 1

サンプル出力1

2

一枚目と二枚目を捨てる。

サンプル入力2

5 3 6 9
5 4 3 2 1

サンプル出力2

0

一枚目から捨てない。

サンプル入力3

5 3 6 9
10 8 6 4 2

サンプル出力3

1

三枚目まで捨てようとするが考え直し、二枚目と三枚目を捨てないことにした。

サンプル入力4

5 3 6 9
5 10 8 6 4

サンプル出力4

0

二枚目が汚れていることを AOR イカちゃんは知らない。

サンプル入力5

5 0 6 9
9 9 8 8 7

サンプル出力5

5

全部捨てても気にしない。
B: イカったー / SNS

問題文

AOR イカちゃんは最近少し機嫌が悪い。
どうやら、”イカったー”のフォロー数とフォロワー数の比が気に入らないようだ
。現在、AOR イカちゃんのフォロー数は $A$ 人、フォロワー数は $B$ 人であり、比は $A:B$ である。

そこで、AOR イカちゃんはフォロー数とフォロワー数の比が気に入った整数比になるように、

フォロー数

を増減させることにした。
なお気に入った整数比とは、比に含まれるどちらの値も $1$ 以上 $N$ 以下の整数となるように表せる比である。

しかし、AOR イカちゃんはできるだけフォロー数を変更したくないので、変更前との差の絶対値をできるだけ小さくしたい。
AOR イカちゃんの機嫌を良くするために、少なくともフォロー数をいくつ変更する必要があるかを求めるプログラムを作成せよ。

入力

$A \ B \ N$

入力の制約

$1 \le A, \ B \le 10^{12}$

$1 \leq N \leq 100 $

出力

気に入った整数比にできる、$A$ の変化量の絶対値の最小値を出力せよ。

サンプル

サンプル入力1

19 30 3

サンプル出力1

1

サンプル入力2

3 7 7

サンプル出力2

0

サンプル入力3

3 7 1

サンプル出力3

4

サンプル入力4

102 30 3

サンプル出力4

12

フォローを $12$ 人減らすことで $90:30 \ (=3:1)$ になり、比の大きい方の数字が $3$ 以下となります。

このとき、変化量は $12$ です。

サンプル入力5

3 4 2

サンプル出力5

1

一人フォローを外すと $2:4 \ (=1:2)$ に、フォローすると $4:4 \ (=1:1)$ になり、どちらも増減の絶対値は $1$ でそれが答えです。

サンプル入力6

1 100 2

サンプル出力6

49

最低でも $1$ 人はフォローしていなければいけない事に注意してください。
C: 失われしグラフ / Lost Graph

問題文

あなたと AOR イカちゃんは競技プログラミングのグラフ問題の準備をしている。
入力ケースの生成は AOR イカちゃんの仕事である。
その問題の入力ケースは $N$ 頂点の有向グラフである。
頂点には $1$ から $N$ までの番号が付いている。
辺には自己ループが含まれるかもしれないが、多重辺は含まれない。

ところが、AOR イカちゃんは突然音信不通となってしまい、元のグラフが手に入らなくなってしまった。残っているのは次の情報だけである。

入次数が $i$ の頂点の数は $a_i$ 個である。つまり、 $i$ を終点とする頂点の数は $a_i$ 個である。

出次数が $i$ の頂点の数は $b_i$ 個である。つまり、 $i$ を始点とする頂点の数は $b_i$ 個である。

残された情報と矛盾しない有向グラフは存在するだろうか。
それを判定し、存在するなら YES と出力した後矛盾しない有向グラフを 1 つ出力せよ。
複数ある場合はどれを出力してもよい。存在しないなら NO と出力せよ。

入力

$n$

$a_0 \cdots a_n$

$b_0 \cdots b_n$

入力の制約

$1 \leq n \leq 50$

$0 \leq a_i \leq n$

$0 \leq b_i \leq n$

出力

条件を満たすグラフが存在する場合は以下の形式で出力せよ。$e_{ij}$ は、 $i$ から $j$ への有向辺が存在するならば 1 、しないなら 0 とせよ。
行末に空白を出力しないように注意せよ。

YES

$e_{11} \ e_{12} \cdots e_{1n}$

$e_{21} \ e_{22} \cdots e_{2n}$

$\vdots$

$e_{n1} \ e_{n2} \cdots e_{nn}$

しない場合は以下のとおりに出力せよ。

NO

サンプル

サンプル入力1

3
1 2 0 0
1 2 0 0

サンプル出力1

YES
0 1 0
0 0 1
0 0 0

サンプル入力2

1
1 0
1 0

サンプル出力2

YES
0

サンプル入力3

2
0 2 0
0 2 0

サンプル出力3

YES
0 1
1 0

サンプル入力4

4
1 3 0 0 0
3 0 0 1 0

サンプル出力4

YES
0 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0

サンプル入力5

1
1 1
0 0

サンプル出力5

NO
D: DAG トリオ / DAG Trio

この問題は G: DAG Trio (Hard) と制約のみが異なる同じ設定の問題です。

プロローグ

弟は最近「だぐとりお」が欲しいとしきりに呟いています。
心配になった兄が調べたところ、弟のクラスでは $k$-DAG (有向グラフであって、ある $k$ 個の辺を削除すると、辺の向きを無視したときの連結成分数を $k$ にでき、かつそれら全てが DAG である) が流行っており、
3-DAG を特に DAG トリオと呼ぶことを突き止めました。
弟に尊敬されたい兄は、与えられたグラフが DAG トリオかどうかを判別するプログラムを作成することにしました。

問題文

$N$ 頂点 $M$ 辺の有向グラフが与えられます。
各頂点には $1$ から $N$ まで番号が振られています。
各有向辺には $1$ から $M$ まで番号が振られています。
有向辺 $i$ は頂点 $a_i$ から $b_i$ に向かいます。
グラフは連結かつ単純です (辺の向きを無視すると、任意の 2 点間に道があり自己ループと多重辺がありません)。
与えられたグラフが DAG トリオならば ”YES”、そうでないなら ”NO” を出力してください。

入力

$N \ M$

$a_1 \ b_1$

$a_2 \ b_2$

$\vdots$

$a_M \ b_M$

制約

$3 \le N \le 500$

$\max(3, N−1) \le M \le 1000$

$1 \le a_i, b_i \le N$

グラフは辺の向きを無視したときに連結である。

各 $i$ に対して$a_i \neq b_i$

異なる $i, j$ に対して $\{a_i, b_i\} \neq \{a_j, b_j\}$

出力

”YES”　または ”NO” を $1$ 行で出力してください。

サンプル

サンプル入力1

3 3
1 2
2 3
3 1

サンプル出力1

YES

サンプル入力2

6 7
1 2
2 3
4 3
4 5
5 6
6 4
3 6

サンプル出力2

YES

サンプル入力3

7 10
4 2
4 7
4 6
2 7
2 5
2 1
5 6
1 3
6 3
4 3

サンプル出力3

NO

サンプル入力4

4 4
1 2
3 2
4 3
2 4

サンプル出力4

YES

サンプル入力5

8 9
5 1
3 8
1 2
4 8
4 7
7 5
6 5
3 2
4 2

サンプル出力5

YES
F: 紙の折りたたみ / Folding Paper

問題文

高さ $H$ マス、幅 $W$ マスの格子状に区切られた長方形の紙がある。
$0$ から数えて上から $i$ 行目、左から $j$ 列目のマスには整数 $i \times W+j$ が書かれている。 $H=2, W=3$ の例を下の図に示す。

AOR イカちゃんは、この紙に対して次のような操作を順に行った。

$1$ マス分の面積になるまでマスの区切り線に沿って繰り返し折る。この時の折る線や山谷、順番などは任意である。紙を破らない任意の折り方ができる。

$4$ 辺を切り落として $H \times W$ 枚の紙に分割する。

上から順にめくっていき、書かれていた整数を並べた数列 $S$ を作る。

例えば、下の図のように折った後切った場合、$S$ として $4, 3, 0, 5, 2, 1$ が得られる。このように、間に差し込むような折り方も可能である。

あなたは AOR イカちゃんから数列 $S$ を受け取った。
しかし、AOR イカちゃんのことを信用していないので、これが本物か確かめたい。
$S$ と一致するような紙の折り方が存在するなら "YES" を、しないなら "NO" を出力するプログラムを書け。

入力

$H \ W$

$S_0 \cdots S_{HW-1}$

入力の制約

$1 \le H, W \le 500$

$S$ は $0$ から $H \times W - 1$ までの整数を $1$ つずつ含む

出力

"YES" または "NO" を $1$ 行で出力せよ。

サンプル

サンプル入力1

1 4
0 1 2 3

サンプル出力1

YES

サンプル入力2

2 3
4 3 0 5 2 1

サンプル出力2

YES

問題文中の例である。

サンプル入力3

1 4
0 2 1 3

サンプル出力3

NO

サンプル入力4

2 2
0 1 3 2

サンプル出力4

YES

$2$ 回半分に折る。
G: DAG トリオ / DAG Trio

この問題は D: DAG Trio (Easy) と制約のみが異なる同じ設定の問題です。

プロローグ

弟は最近「だぐとりお」が欲しいとしきりに呟いています。
心配になった兄が調べたところ、弟のクラスでは $k$-DAG (有向グラフであって、ある $k$ 個の辺を削除すると、辺の向きを無視したときの連結成分数を $k$ にでき、かつそれら全てが DAG である) が流行っており、
3-DAG を特に DAG トリオと呼ぶことを突き止めました。
弟に尊敬されたい兄は、与えられたグラフが DAG トリオかどうかを判別するプログラムを作成することにしました。

問題文

$N$ 頂点 $M$ 辺の有向グラフが与えられます。
各頂点には $1$ から $N$ まで番号が振られています。
各有向辺には $1$ から $M$ まで番号が振られています。
有向辺 $i$ は頂点 $a_i$ から $b_i$ に向かいます。
グラフは連結かつ単純です (辺の向きを無視すると、任意の 2 点間に道があり自己ループと多重辺がありません)。
与えられたグラフが DAG トリオならば ”YES”、そうでないなら ”NO” を出力してください。

入力

$N \ M$

$a_1 \ b_1$

$a_2 \ b_2$

$\vdots$

$a_M \ b_M$

制約

$3 \le N \le 500$

$\max(3, N−1) \le M \le 30000$

$1 \le a_i, b_i \le N$

グラフは辺の向きを無視したときに連結である。

各 $i$ に対して$a_i \neq b_i$

異なる $i, j$ に対して $\{a_i, b_i\} \neq \{a_j, b_j\}$

出力

”YES”　または ”NO” を $1$ 行で出力してください。

サンプル

サンプル入力1

3 3
1 2
2 3
3 1

サンプル出力1

YES

サンプル入力2

6 7
1 2
2 3
4 3
4 5
5 6
6 4
3 6

サンプル出力2

YES

サンプル入力3

7 10
4 2
4 7
4 6
2 7
2 5
2 1
5 6
1 3
6 3
4 3

サンプル出力3

NO

サンプル入力4

4 4
1 2
3 2
4 3
2 4

サンプル出力4

YES

サンプル入力5

8 9
5 1
3 8
1 2
4 8
4 7
7 5
6 5
3 2
4 2

サンプル出力5

YES
A: 席取り - Taking a Seat -

物語

A君はある試験を受けるために試験会場の教室に入った。
ただ、A君はとても神経質なタイプだ。
そのため、状況によってA君が座りたくない席がもしかしたらあるかもしれない。
そこで、A君はある条件をもとに座れる席がいくつあるか調べることにした。

問題

A君は神経質なタイプの人間だ。
まず、A君は前から1行目の席には座れない。
というのも、試験監督の近くに座ると緊張してしまって問題が解けなくなる。
また、右隣か左隣に人がいるとA君は座れない。
テスト中に隣の鉛筆の音で集中できなくなってしまうからだ。
さらに、うるさい奴の近く (上下左右斜めの8近傍) には座れない。休憩中、声が頭に響いて休めないからだ。
あと、当たり前だがすでに生徒が座っている席は座れない。

この条件の中で果たしてA君が座れる場所があるだろうか。
教室の席はM × N個並んでいるとして、その個数を求めよう。

入力形式

1行目ではM (行数:縦の席数) とN (列数:横の席数) が与えられる。
2行目からM行、長さNの文字列が1行ずつ与えられる。i番目の文字列のj文字目はi行j列目の席の状態を表す。各文字は'-'、'x'、もしくは'o'のいずれかであり、空席を'-'、休憩中うるさい生徒が座る席を'x'、それ以外の生徒が座っている席を'o'とする。

制約

0<M ≤ 100

0<N ≤ 100

出力形式

条件によってA君が座れる席の個数を1行で出力せよ。最後に改行を忘れないこと。

入力例1

5 5
--o--
--xo-
--x--
o---x
--xoo

出力例1

3

入力例2

2 6
--oooo
x--o--

出力例2

1

入力例3

3 5
-----
-----
-----

出力例3

10

入力例4

4 6
o-oxoo
oo-ooo
oooxo-
o-ooox

出力例4

0
B: 山手線ゲーム - Yamanote-line Game -

豆（？）知識

山手線は便利である。 なぜならば、130円払うだけで時間の許す限り何周でも乗っていられるからだ。ただし、切符で乗車する場合は、切符の有効時間に気をつけなければならない。ICカードなら安心らしい。この山手線の特性を利用して、東京近郊には電車に揺られながら惰眠を貪る輩が存在する。ちなみに、この問題の作問者はやったことがない。駅員にバレることは稀だろうが、バレたらめんどくさそうなので、オススメはしない。

問題文

山手線の特性を利用したゲームをしよう。 ここでは一般化のため、1からNで番号付けられたN個の駅があり、1, 2, ..., Nの順で駅が円上に並び、各駅からいずれの駅へ行くにもd円で乗車可能な路線として山手線モドキを考えることにする。ゲームは以下のルールに従う。

好きな駅をスタート地点に選びd円で山手線モドキに乗車する。

その後、任意の駅で降車し再度乗車することを繰り返す。

スタートした駅で降車した時点でゲーム終了となる。

i番目の駅で降りるとp_i円の報酬を得ることができる．

ただし、1度報酬を得た駅で再度報酬を得ることはできない。

また、降車した後に再度山手線モドキに乗車するにはd円かかる。

さて、あなたは最大で何円儲けることができるだろうか。ぜひ、挑戦してみて欲しい。

入力形式

N d
p_1 p_2 … p_N

入力はすべて整数からなる。
1行目には、山手線モドキの駅の数Nと乗車賃dが空白区切りで与えられる。
2行目には、各駅でもらえる報酬が空白区切りで与えられ、i番目の値p_iは駅iの報酬を表している。

制約

3 ≤ N ≤ 1{,}000

1 ≤ d ≤ 1{,}000

1 ≤ p_i ≤ 1{,}000 (1 ≤ i ≤ N)

出力形式

ゲームで得られる金額の最大値を1行に出力せよ。1円以上の金額を得ることができない場合は"kusoge"と1行に出力せよ。出力の最後は改行し余計な文字を含んではならない。

入力例1

5 130
130 170 100 120 140

出力例1

50

入力例2

3 100
100 90 65

出力例2

kusoge

入力例3

6 210
300 270 400 330 250 370

出力例3

660

入力例4

4 540
100 460 320 280

出力例4

kusoge
C : Mod!Mod!

物語

じゃん！探してますよ目撃証言！
会津に怪盗が現れた！みんなのウマウマ棒が盗まれた！犯人は誰だ！？
解きあかせ！Mod!Mod!

問題文

"アイズ"...それは選ばれし者の心に膨らむ奇跡のつぼみ...。特殊能力"アイズ"を使えばどんなものだって盗むことができる。

会津一の大怪盗、あいずまるは世界を謎で満たすためにn人の探偵から「ウマウマ棒」を盗むことにした。ウマウマ棒とはあいずまるが大好きなただのお菓子であり、n人の探偵はそれぞれ数本のウマウマ棒を持っている。また、あいずまるは強欲なためそれぞれの探偵からウマウマ棒を盗むとき、その探偵が所持する全てのウマウマ棒を盗む。

ウマウマ棒の3本同時食いにハマっているあいずまるは、3本以上のウマウマ棒が手元にあるとき、誘惑に負けて手持ちのウマウマ棒が3本未満になるまで、3本ずつウマウマ棒を食べてしまう。しかし、あいずまるは手元にウマウマ棒がないとショックでアイズを失ってしまい、それ以上ウマウマ棒を盗むことができなくなってしまう。つまり、ウマウマ棒を盗むためには手持ちのウマウマ棒の本数を1本以上にしておく必要があり、0本になるとそれ以上ウマウマ棒を盗むことができなくなる。

少しでも多くの探偵からウマウマ棒を盗みたいあいずまるは、どの探偵から順にウマウマ棒を盗むかによって何人の探偵からウマウマ棒を盗めるのかが変わることに気づいた。しかし、あいずまるには難しいことは分からない。「ハテー？」あいずまるの優秀な部下であるあなたは、あいずまるの代わりに最大で何人の探偵からウマウマ棒を盗むことができるのかを求めるプログラムを書いてあげることにした。

探偵の人数nと、n人の探偵からそれぞれ何本のウマウマ棒を盗むのかが与えられるので、最適な順番で探偵からウマウマ棒を盗んだとき、最大で何人の探偵からウマウマ棒を盗むことができるかを出力するプログラムを作成せよ。ただし、はじめの手持ちのウマウマ棒の本数は0であるが、最初に限り手持ちが0本でもウマウマ棒を盗むことができるとする。

入力形式

入力は2行からなり、以下の形式で与えられる。

n
a_1 a_2 … a_n

1行目には、ウマウマ棒を盗む探偵の数である整数nが与えられる。
2行目には、各探偵から盗むウマウマ棒の本数n個が空白区切りで与えられる。

制約

1 ≤ n ≤ 500{,}000

1 ≤ a_i ≤ 9 (1 ≤ i ≤ n)

出力形式

最適な順番で探偵からウマウマ棒を盗んだとき、最大で何人の探偵からウマウマ棒を盗むことができるか一行に出力せよ。

入力例1

6
2 5 2 5 2 1

出力例1

5

2 5 1 2 5の順で盗むと5人から盗むことができる。どのような順序で盗んでも6人から盗むことはできない。

入力例2

3
3 6 9

出力例2

1

どの1人から盗んでも手持ちのウマウマ棒の本数は0になってしまい、アイズを失ってしまう。

入力例3

6
1 2 3 4 5 6

出力例3

6
D: 日焼け - Suntan -

物語

あいずにゃんは若ヶ松高校のプログラミングコンテスト部、通称ぷろこん部に所属する2年生である。天使のようにかわいい。
あいずにゃんは今年の夏フェスに参加する予定なので、聴きに行くバンドのスケジュールを立てた。
ここで心配なのが日焼けだ。
ライブはすべて野外で行われるが、あいずにゃんは日焼けしやすい体質なので長時間野外で紫外線を浴びすぎるとすぐ日焼けしてしまう。
ライブがない間は屋内に避難することでできるだけ紫外線を回避するつもりだが、ライブ中はどうしても日に当たってしまう。
そこであいずにゃんは日焼け止めを塗ることで紫外線対策をすることを考えた。

問題

日焼け止めを塗ると、塗った時間からT分間だけその効果を得ることができる。
日焼け止めは1回しか塗ることができないため、効果的に使いたい。
あいずにゃんは、ライブの開始時刻から終了時刻までは野外にいて、それ以外では屋内にいる。
あいずにゃんが聴く予定のライブスケジュールが与えられるので、野外にいる間で日焼け止めの効果を得られる最大の時間の長さを求めよ。

入力形式

入力は次の形式で与えらえる。

T
N
s_1 t_1
...
s_N t_N

1行目では日焼け止めの効果を得られる時間を表す整数Tが与えられる。
2行目ではあいずにゃんが聴くライブの数を表す整数Nが与えられる。
続くN行には、あいずにゃんがi番目に聴くライブの開始時刻を表す整数s_iと終了時刻を表す整数t_iが空白区切りで与えられる。

制約

1 ≤ T ≤ 10^{15}

1 ≤ N ≤ 10^5

0 ≤ s_i < t_i ≤ 10^{15} (1 ≤ i ≤ N)

(i+1)番目のライブの開始時刻はi番目のライブの終了時刻と同じかそれよりも遅い。すなわち、t_i ≤ s_{i+1} (1 ≤ i < N)

出力

野外にいる間で日焼け止めの効果を得られる最大の時間の長さを1行で出力せよ。

入力例1

20
1
0 10

出力例1

10

入力例2

20
1
0 100

出力例2

20

入力例3

9
3
1 5
9 11
13 20

出力例3

7

入力例4

25
5
9 12
15 20
21 25
28 40
45 60

出力例4

21
E: 鬼畜ババ抜き - Unbalanced Old Maid -

物語

高坂さんと園田さんと南さんは子供の頃からの仲良し3人組だ。3人は沖縄に修学旅行に行くも、台風が来てしまい、海で遊ぶことができないのでババ抜きをすることにした。

園田さんは勝負事には強いが、ポーカーフェイスが苦手なため、自分のカードが引かれるときに無意識にかわいらしい顔芸を披露してしまう。園田さんを愛して止まない高坂さんと南さんは、園田さんの顔芸を見るだけで園田さんの手札が分かってしまうため、園田さんのカードを引くときは、自分が有利になるように引くことができる。
一方、高坂さんと南さんは特に顔芸をしたりはしないので、手札がばれることはない。 よって、高坂さんと南さんのカードを引く人はそれぞれ、高坂さんと南さんが持っているカードの中から等確率で1枚引く。

どう考えても不利な園田さんは、ババ抜きでなかなか勝てないことに違和感を覚えている。 使用するカードの種類数nと初期の手札が与えられたとき、園田さんが負けとならない確率を求めてあげよう。

問題文

高坂さん、園田さん、南さんの3人は、以下の状況でババ抜きを行う。

使用するカードは、1からnまでの整数が書かれたn種類のカードそれぞれ4枚ずつとジョーカー1枚の合計4n+1枚である。

最初の手札が与えられたとき、3人はそれぞれ自分の手札に同一の整数が書かれたカードのペア（2枚組）があるならば、そのようなペアを全て捨てる。

3人は「高坂さんが南さんの手札からカードを引く」、「園田さんが高坂さんの手札からカードを引く」「南さんが園田さんの手札からカードを引く」という順番（ターン）で以下の操作を繰り返す。（このババ抜きでは、カードを引いた人が、次に引かれるというルールであることに注意せよ。）

一人がジョーカーのみを持ち、その人以外の2人の手札が空のとき、ババ抜きは終了し、ジョーカーを持っている人が負けとなる。

カードを引く順番の人の手札が空のとき、ターンを次の人とし、1.に戻る。

そうでなければ、カードを引く順番の人は決められた相手からカードを1枚引く。ただし、相手の手札が空のとき、まだ残っているもう1人からカードを引く。

引いたカードと同じ整数が書かれたカードがカードを引いた人の手札にあれば、その2枚を捨てる。

ターンを次の人とし、1.へ戻る。

ただし、園田さんのカードを引く人（南さんか高坂さん）は、以下の戦略でカード引く。

もし自分のカードと園田さんのカードで同じ整数が書かれたカードがあれば、それらのうち最小の整数が書かれたカードを引く

そうでないとき、園田さんがジョーカーでないカードを持っていれば、それらのうち最小の整数が書かれたカードを引く

そうでないなら、園田さんはジョーカーしか持っていないので、ジョーカーを引く

高坂さんと南さんのカードを引く人は、それぞれ高坂さんと南さんが持っているカードの中から等確率で1枚引く。

使用するカードの種類数nと3人の初期の手札が与えられたとき、園田さんが負けとならない確率を求めてあげよう。

入力形式

入力は4行からなり、以下の形式で与えられる。

n
m_1 c_{1,1} ... c_{1,m_1}
m_2 c_{2,1} ... c_{2,m_2}
m_3 c_{3,1} ... c_{3,m_3}

1行目にジョーカー以外のカードの種類数nが与えられる。
続く入力は3行からなり、2行目に高坂さんの手札、3行目に園田さんの手札、4行目に南さんの手札の情報が与えられる。
i+1 (1 ≤ i ≤ 3)行目では行頭に手持ちの枚数m_i、続けて手持ちのカードを表すm_i個の整数c_{i,j} (1 ≤ j ≤ m_i)が空白区切りで与えられる。 0はジョーカー、1からnはカードに書かれた整数を表す。

制約

1 ≤ n ≤ 100

m_1+m_2+m_3 = 4n+1

3人の手札で0はちょうど1つ、1からnはちょうど4回ずつ現れる

0 ≤ c_{i,j} ≤ n (1 ≤ i ≤ 3, 1 ≤ j ≤ m_i)

出力形式

園田さんが負けとならない確率を1行に出力せよ。答えには10^{−6}を超える絶対誤差があってはならない。

入力例1

1
1 1
3 0 1 1
1 1

出力例1

0.0

高坂さんが南さんのカード1を引き、高坂さんと南さんは手札が空になる。
園田さんはどうしても勝つことはできない。

入力例2

1
2 1 1
1 1
2 0 1

出力例2

0.5

はじめの高坂さんのターンは、高坂さんの手札が既に空なので何もしない。次の園田さんのターンでは、園田さんは南さんの手札のうちそれぞれ0.5の確率でカード1かジョーカーを引く。カード1を引いたとき、園田さんの手札は空となり勝利する。一方ジョーカーを引いたときは、次の南さんのターンで、南さんは確実にカード1を引くので園田さんが負けとなる。

入力例3

2
3 0 1 2
3 1 2 2
3 1 1 2

出力例3

0.5

入力例4

2
2 0 1
6 2 2 2 1 1 1
1 2

出力例4

0.6666666667