alexjercan/bugnet huggingface dataset:
カツサンド (Cutlet Sandwich)

ある世界には、 $X$ 種類の「サンド」、 $Y$ 種類の「カツ」、 $Z$ 種類の「カレー」という食べ物があります。

この世界には $N$ 種類の「カツサンド」という食べ物があり、 $i$ 種類目のカツサンドは $A_i$ 種類目のサンドと $B_i$ 種類目のカツが原料です。

また、 $M$ 種類の「カツカレー」という食べ物があり、 $i$ 種類目のカツカレーは $C_i$ 種類目のカツと $D_i$ 種類目のカレーが原料です。

Segtree 君は、あるカツサンドまたはカツカレーを持っているとき、原料のうち少なくとも $1$ つが共通しているようなカツサンドまたはカツカレーと交換することができます。

例えば、$a$ 種類目のサンドと $b$ 種類目のカツが原料であるカツサンドを持っているとき、 $a$ 種類目のサンドまたは $b$ 種類目のカツを原料に持つ任意のカツサンド、または、 $b$ 種類目のカツを原料に含む任意のカツカレーと交換できます。

今、 Segtree 君は $S$ 種類目のカツサンドを持っていますが、食べたいのは $T$ 種類目のカツカレーです。

$T$ 種類目のカツカレーを手に入れることができるか判定してください。もし可能ならば、最小何回の交換で目的のカツカレーを手にいられるかを求めてください。

入力

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

$X$ $Y$ $Z$ $N$ $M$ $S$ $T$
$A_1$ $B_1$
$A_2$ $B_2$
$\ldots$
$A_N$ $B_N$
$C_1$ $D_1$
$C_2$ $D_2$
$\ldots$
$C_M$ $D_M$

出力

$T$ 種類目のカツカレーを手に入れるために必要な最小の交換回数を出力してください。手に入れることが不可能ならば、代わりに「 $-1$ 」を出力してください。

ただし、最後には改行を入れること。

制約

$1 \leq X,Y,Z,N,M \leq 10^5$

$1 \leq S \leq N$

$1 \leq T \leq M$

$1 \leq A_i \leq X$

$1 \leq B_i \leq Y$

$1 \leq C_i \leq Y$

$1 \leq D_i \leq Z$

入力は全て整数である。

入力例1

1 1 1 1 1 1 1
1 1
1 1

出力例1

1

入力例2

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

出力例2

4

入力例3

1 2 2 1 2 1 1
1 2
1 2
2 1

出力例3

-1
カードはおやつに入りますか？(Are Cards Snacks?)

square1001君は $N$ 枚のカードを持っています。

これらのカードにはそれぞれ整数が書かれており、$i$ 枚目のカードに書かれている整数は $A_i$ です。

square1001君の今日の乱数は $K$ です。square1001君はこれらの $N$ 枚のカードの中から何枚かのカードを選び、合計が $K$ となるようにしたいです。

この様子を見ていたE869120君は、これを阻止したいと考えました。

具体的には、事前に何枚かのカードを食べることで、square1001 君がどのように残りのカードを選んでも合計が $K$ とならないようにしたいです。

しかし、E869120 君は満腹であるため、なるべくカードを食べたくありません。

さて、E869120 君は最低何枚のカードを食べることでこれを阻止できますか？

入力

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

$N$ $K$
$A_1$ $A_2$ $A_3$ $\cdots$ $A_N$

出力

E869120 君が目的を達成するために食べるカードの枚数の最小値を、1 行で出力しなさい。

ただし、最後には改行を入れること。

制約

$1 \leq N \leq 20$

$1 \leq K \leq 1000000000 \ (= 10^9)$

$0 \leq A_i \leq 1000000 \ (= 10^6)$

入力は全て整数である。

入力例1

5 9
8 6 9 1 2

出力例1

2

例えば、3 番目のカード (9 が書かれている) と 4 番目のカード (1 が書かれている) を食べることで、square1001 君の目的を阻止することができます。

入力例2

8 2
1 1 1 1 1 1 1 1

出力例2

7

入力例3

20 200
31 12 21 17 19 29 25 40 5 8 32 1 27 20 31 13 35 1 8 5

出力例3

6
五等分のケーキ (Divide Cake into Five)

Segtree 君は五つ子の家庭教師をしています。今日はクリスマスイブなので、五つ子のために円形のケーキを五等分しようとしています。

ケーキは中心から扇形状に $N$ 個のピースに分けられており、 $i$ 番目と $i + 1$ 番目($1 \leq i \leq N - 1$) 、 $N$ 番目と $1$ 番目のピースは隣り合っています。

$i$ 番目のピースの大きさは $A_i$ です。全てのピースの大きさの和を $S$ とすると、全ての入力について $S$ が $5$ の倍数であることが保証されます。

ある非負整数 $Y$ が与えられます。以下の条件を満たすようなケーキの五つ子への分け方を、「ケーキの五等分」と呼びます。

全ての人が1つ以上のピースを取る。

ケーキの中でそれぞれが取るピースたちは連結である。つまり、取る人でピースをグループ分けしたとき、同じグループかつ隣り合っているピースに移動することを繰り返して辿り着けないような同じグループ内のピースの組は存在しない。

誰も取らないピースは存在しない。

全ての人について、取るピースの大きさを $X$ としたとき、必ず $X + Y \geq S / 5$ を満たす。

「ケーキの五等分」になるようなケーキの分け方の通り数が何通りあるか求めてください。

入力

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

$N$ $Y$
$A_1$ $A_2$ $\ldots$ $A_N$

出力

「ケーキの五等分」になるようなケーキの分け方の通り数を出力してください。

ただし、最後には改行を入れること。

制約

$5 \leq N \leq 300$

$1 \leq A_i \leq 10^9$

$0 \leq Y \leq 10^9$

入力は全て整数である。

入力例1

5 0
1 1 1 1 1

出力例1

1

入力例2

10 27
3 1 4 1 5 9 2 6 5 4

出力例2

252
りんごだいぼうけん

square1001君とE869120君は縦 $H$ 行、横 $W$ 列のグリッドの世界に迷い込んでしまいました!

この世界の神は言いました。

「リンゴを $K$ 個集めて二人が出会ったとき、さすれば元の世界に帰れるであろう。」

この言葉を聞いたsquare1001君は、リンゴを $K$ 個以上集めてE869120君がいるマスへ向かうことにしました。

ここで、グリッドの各マスは次のように表されます。

's'：square1001君がいるマスです。

'e'：E869120君がいるマスです。

'a'：リンゴが1つ落ちているマスです。このマスを初めて訪れたときにリンゴを1つ得ることができます。このグリッド上にこのマスは20個以下しかありません。

'#'：壁です。このマスに訪れることはできません。

'.'：何もないマスです。このマスに訪れることができます。

square1001君は自分がいるマスから上下左右に隣り合うマスへの移動を繰り返すことで、目的を達成しようとします。ただし、グリッドから外に出ることはできません。

square1001君が目的を達成するために必要な移動回数の最小値を求めてください。

ただし、E869120君が動くことはないものとします。また、square1001君はリンゴを $K$ 個以上持ち運ぶ能力があるものとします。

また、目標が達成できないときは「-1」を出力してください。

入力

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

グリッドの上から $i$ マス目、左から $j$ マス目の文字を $A_{i, j}$ とする。

$H$ $W$ $K$
$A_{1,1} A_{1,2} A_{1,3} \cdots A_{1,W}$
$A_{2,1} A_{2,2} A_{2,3} \cdots A_{2,W}$
$A_{3,1} A_{3,2} A_{3,3} \cdots A_{3,W}$
$\ldots$
$A_{H,1} A_{H,2} A_{H,3} \cdots A_{H,W}$

出力

square1001君が目的を達成するまでに必要な移動回数の最小値を求めてください。ただし、不可能な場合は「-1」を出力してください。

ただし、最後には改行を入れること。

制約

$1 \leq H \leq 1000$

$1 \leq W \leq 1000$

$1 \leq K \leq 20$

$H, W, K$ は整数である。

$A_{i, j}$ は 's'、'e'、'a'、'#'、'.'のいずれかである。

グリッドに 's'、'e'はそれぞれただ 1 つのみ含まれる。

グリッドに含まれる 'a' の数は $K$ 個以上 $20$ 個以下である。

入力例1

5 5 2
s..#a
.#...
a#e.#
...#a
.#...

出力例1

14

入力例2

7 7 3
.......
.s...a.
a##...a
..###..
.a#e#.a
#.###..
a..#..a

出力例2

-1

目的が達成不可能な場合は「-1」を出力してください。

入力例3

12 12 10
.#####......
.##.....#...
....a.a#a..#
.#..#a......
##.....a#s..
#..a###.##.#
.e#.#.#.#a..
..#a#.....#.
#..##a......
.a...a.a..#.
a....#a.aa..
...a.#...#a.

出力例3

30
A: チーム分け

問題文

今年の KUPC はチームで参加できることを聞きつけたあなたは、友達に声をかけてチームで出場することにしました。

最終的に、あなたを含めて $4$ 人が集まりました。

個人の強さはレーティングで表され、$4$ 人のレーティングはそれぞれ $a$, $b$, $c$, $d$ です。

あなたたちは $2$ 人ずつの $2$ チームに分かれることにしました。

このとき、チームの強さはそのチームを構成する $2$ 人のレーティングの和で定義されます。
また、チーム間の実力差はそれぞれのチームの強さの差の絶対値で定義されます。

あなたはチーム間の実力差ができるだけ小さくなるようにチーム分けを行いたいです。

うまくチーム分けを行ったときの、チーム間の実力差の最小値を求めてください。

制約

$1 \leq a, b, c, d \leq 2799$

入力はすべて整数である

入力

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

$a$ $b$ $c$ $d$

出力

チーム間の実力差の最小値を整数 $1$ 行で出力せよ。

入力例 1

2 1 3 4

出力例 1

0

$1$ 人目と $3$ 人目、$2$ 人目と $4$ 人目でチームを組むと、チームの強さは共に $5$ となり、実力差は $0$ となります。
明らかにこれが最小です。

入力例 2

64 224 239 1024

出力例 2

625
B: サイコロを転がさないで

問題文

$H$ 行 $W$ 列からなるグリッドがあります。以降、グリッド上の $i$ 行目 $j$ 列目のマスを $(i, j)$ のマスと書きます。

グリッドの各マスには、$1$ 以上 $6$ 以下の数字か、あるいは # の文字が $1$ つずつ書かれています。ただし、$i$ と $j$ がともに偶数であるような $(i, j)$ のマスには必ず # が書かれています。

あなたは以下の図で表されるようなサイコロを $1$ つ持っています。

最初、あなたはこのサイコロを底面が $6$, 前面が $2$, 右面が $3$ となるように $(1, 1)$ のマスに置きます。
ここで、前面は $(i, j)$ の $i$ が増える方向の面を、右面は $j$ が増える方向の面を指します。

その後、サイコロが置かれているマスに辺で隣接する $4$ マスのいずれかにサイコロを転がす操作を好きな回数繰り返すことができます。
サイコロを転がす際、サイコロは転がす方向に90度回転します。

ただし、サイコロを転がす際には以下の条件を満たしている必要があります。

グリッドの外にサイコロを転がしてはならない

# が書かれているマスに転がしてはならない

転がした後の状態を考えたときに、サイコロの底面に書かれた数字とそのマスに書かれた数字が一致する

$(1, 1)$ のマスには必ず $6$ が書かれていることが保証されます。

サイコロを転がす操作を繰り返すことで、サイコロを $(1, 1)$ のマスから $(H, W)$ のマスに移動させることができるか判定してください。

制約

$1 \leq H, W \leq 100$

グリッドの各マスには $1$ 以上 $6$ 以下の数字、または # が書かれている

$i, j$ がともに偶数となるような $(i, j)$ のマスには必ず # が書かれている

$(1, 1)$ には $6$ が書かれていることが保証される

入力

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

$H$ $W$
$s_{11}s_{12} \ldots s_{1W}$
$s_{21}s_{22} \ldots s_{2W}$
$\vdots$
$s_{H1}s_{H2} \ldots s_{HW}$

ここで、$s_{ij}$ は $(i, j)$ のマスにかかれている数字または文字を表す。
すなわち、$s_{ij}$ は $1$ 以上 $6$ 以下の数字であるか、あるいは # である。

出力

$(1, 1)$ のマスから $(H, W)$ のマスへサイコロを転がして移動させることができるならば YES を、そうでないならば NO を 1 行で出力せよ。

入力例 1

3 3
631
4#2
516

出力例 1

YES

$(1, 1), (1, 2), (1, 3), (2, 3), (3, 3)$ の順に転がすことで、到達可能です。

入力例 2

3 3
6#1
##2
516

出力例 2

NO

入力例 3

5 5
61244
2#5#3
14641
5#5#5
63126

出力例 3

YES
C: サボテンクエリ

問題文

単純無向グラフで、任意の辺が高々 $1$ つの単純閉路にしか含まれないようなものをサボテングラフと呼ぶことにします。

$N$ 頂点 $M$ 辺の連結なサボテングラフ $G$ が与えられます。

各頂点は $1$ から $N$ まで番号が付いています。

また、$i$ 個目の辺は頂点 $a_i$ と頂点 $b_i$ を結んでおり、コストは $c_i$ です。

グラフ $G$ 上の単純パスのコストを、そのパス上に含まれる全ての辺のコストの XOR と定めます。

以下のような形式の $Q$ 個のクエリに答えてください。

x_i y_i k_i ― 頂点 $x_i$ と頂点 $y_i$ を繋ぐすべての単純パスのコストを列挙して重複する値を除き、小さい順に並べた列を $d = d_1, d_2, ... , d_L$ としたときに、$d_{k_i}$ を求めよ。ただし、このコスト列 $d$ の長さ $L$ が $k_i$ より小さい場合は $-1$ とする。

制約

$2 \leq N \leq 10^5$

$N - 1 \leq M \leq 2 \times 10^5$

$1 \leq a_i, b_i \leq N$

$a_i \neq b_i$

$0 \leq c_i < 2^{30}$

$1 \leq Q \leq 2 \times 10^5$

$1 \leq x_i, y_i \leq N$

$x_i \neq y_i$

$1 \leq k_i \leq 2^{30}$

与えられるグラフは連結なサボテングラフである。

入力は全て整数である。

入力

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

$N$ $M$
$a_1$ $b_1$ $c_1$
$a_2$ $b_2$ $c_2$
$:$
$a_M$ $b_M$ $c_M$
$Q$
$x_1$ $y_1$ $k_1$
$x_2$ $y_2$ $k_2$
$:$
$x_Q$ $y_Q$ $k_Q$

出力

$Q$ 個のクエリの答えを一行ごとに順番に出力せよ。

入力例 1

4 4
1 2 1
1 3 8
3 2 0
1 4 7
4
1 2 1
2 1 2
1 4 1
3 4 1073741824

出力例 1

1
8
7
-1

頂点 $1$ から頂点 $2$ への単純パスは、辺 $1$ のみを経由するものと、辺 $2, 3$ を経由するもので、コストはそれぞれ $1$, $8$ です。なので、$1$ つめのクエリの答えは $1$となります。

頂点 $2$ から頂点 $1$ への単純パスも上記と同様なので、 $2$ つ目のクエリの答えは $8$ となります。

頂点 $1$ から頂点 $4$ への単純パスは、辺 $4$ のみを経由するもののみで、コストは $7$ です。なので、$3$ つ目のクエリの答えは $7$ となります。

頂点 $3$ から頂点 $4$ への単純パスは、辺 $2$, $4$ を経由するものと、辺 $3$, $1$, $4$ を経由するもので、コストはそれぞれ $15$, $6$ です。$1073741824$ 番目に小さいコストは存在しないので、$4$ つ目のクエリの答えは $-1$ となります。

入力例 2

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

出力例 2

3
3
7
10
7
-1
2
-1
D: Xor Array

問題文

整数 $N$ と $X$ が与えられます。
以下の条件を満たす長さ $N$ の数列の個数を $998244353$ で割った余りを求めてください。

数列は広義単調増加である。

数列の各要素は $0$ 以上 $X$ 以下である。

全ての要素の排他的論理和(xor)が $X$ である。

制約

$1 \leq N \leq 500$

$0 \leq X \leq 500$

$N$ と $X$ は整数である。

入力

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

$N$ $X$

出力

答えを出力せよ。

入力例1

2 3

出力例1

2

数列 $\{0,3\}$ と $\{1,2\}$ が条件を満たします。

入力例2

1 1

出力例2

1

数列 $\{1\}$ のみが条件を満たします。

入力例3

224 239

出力例3

400351036
E: 数列ゲーム

問題文

長さ $N$ の正整数列 $a_1, a_2, \ldots, a_N$ があります。

この数列を用いた、$2$ 人のプレイヤーが先手と後手に分かれて行う以下のゲームを考えます。

先手と後手は交互に、以下の操作のどちらかを選んで行う。

数列の正の項を $1$ つ選び、その値を $1$ 減らす。

数列の全ての項が正のとき、全ての項の値を $1$ ずつ減らす。

先に操作を行えなくなったほうが負けです。

$2$ 人のプレイヤーが最適に行動したとき、先手と後手どちらが勝つかを求めてください。

制約

$1 \leq N \leq 2 \times 10^5$

$1 \leq a_i \leq 10^9$

入力は全て整数である

入力

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

$N$
$a_1$ $a_2$ $...$ $a_N$

出力

先手が勝つときは First を、後手が勝つときは Second を出力せよ。

入力例 1

2
1 2

出力例 1

First

先手が最初に第 $1$ 項の値を $1$ 減らすと、次に後手は第 $2$ 項の値を $1$ 減らすしかありません。

そのあとで先手が第 $2$ 項の値を $1$ 減らすと、数列の全ての項の値は $0$ になり、
後手は操作を行うことができなくなります。

入力例 2

5
3 1 4 1 5

出力例 2

Second

入力例 3

8
2 4 8 16 32 64 128 256

出力例 3

Second

入力例 4

3
999999999 1000000000 1000000000

出力例 4

First
F: ボタンの木

問題文

$N$ 頂点 $N-1$ 辺からなる木があり、$i$ 番目の辺は $u_i$ 番目の頂点と $v_i$ 番目の頂点を接続しています。

各頂点にはボタンが咲いており、$i$ 番目の頂点に咲いているボタンをボタン $i$ と呼ぶことにします。

はじめ、ボタン $i$ の美しさは $a_i$ です。

ボタン $i$ を押すたびに、ボタン $i$ の美しさを隣接するボタンに $1$ ずつ分け与えます。

すなわち、$i$ 番目の頂点に $c_1, ..., c_k$ 番目の頂点が隣接している場合、ボタン $i$ の美しさが $k$ 減少し、ボタン $c_1, ..., c_k$ の美しさがそれぞれ $1$ ずつ増加します。

このとき、負の美しさのボタンを押しても良いし、ボタンを押した結果あるボタンの美しさが負になっても良いです。

あなたの目的はボタン $1, 2, ..., N$ の美しさをそれぞれ $b_1, ..., b_N$ にすることです。

最小で合計何回ボタンを押せば目的を達成できるでしょうか。

制約

入力はすべて整数である

$1 \leq N \leq 10^5$

$1 \leq u_i, v_i \leq N$

$-1000 \leq a_i, b_i \leq 1000$

$\sum_i a_i = \sum_i b_i$

与えられるグラフは木である

与えられる入力において目的は必ず達成できる

入力

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

$N$
$u_1$ $v_1$
$\vdots$
$u_{N-1}$ $v_{N-1}$
$a_1$ $a_2$ $...$ $a_N$
$b_1$ $b_2$ $...$ $b_N$

出力

目的を達成するためにボタンを押す合計回数の最小値を出力せよ。

入力例1

4
1 2
1 3
3 4
0 3 2 0
-3 4 5 -1

出力例1

4

次のように合計 $4$ 回ボタンを押すことで目的を達成でき、このときが最小です。

ボタン $1$ を $2$ 回押します。ボタン $1, 2, 3, 4$ の美しさがそれぞれ $-4, 5, 4, 0$ に変化します。

ボタン $2$ を $1$ 回押します。美しさがそれぞれ $-3, 4, 4, 0$ に変化します。

ボタン $4$ を $1$ 回押します。美しさがそれぞれ $-3, 4, 5, -1$ に変化します。

入力例2

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

出力例2

3
G: 一番遠い町

問題文

$N$ 個の町と $N-1$ 個の道があります。

すべての町と道にはそれぞれ $1$ から $N$, $1$ から $N-1$ の番号がついています。

道 $i$ は町 $a_i$ と町 $b_i$ を距離 $d_i$ で双方向につないでいます。

最初はすべての道が通行可能な状態であり、どの町からもいくつかの道を通ることですべての町に行くことができます。

すいばかくんは最初、町 $1$ にいます。

$Q$ 個のクエリが与えられるので順番に処理してください。クエリは $3$ 種類あり、以下の形式で与えられます。

クエリ $1$ : 1 x ― すいばかくんが町 $x$ に移動する。ただし、このクエリ時点で、すいばかくんがいる町と町 $x$ は通行可能な $1$ つの道で直接つながれていることが保証される。

クエリ $2$ : 2 y ― 道 $y$ が封鎖される。ただし、このクエリ時点で、道 $y$ は通行可能であることが保証される。

クエリ $3$ : 3 z ― 道 $z$ が通行可能になる。ただし、このクエリ時点で、道 $z$ は封鎖されていることが保証される。

さらに、各クエリを行った直後に、すいばかくんがその時点で通行可能な道のみを使って到達可能な町のうち、すいばかくんがいる町から一番遠い町の番号を昇順ですべて出力してください。

制約

$1 \leq N \leq 2 \times 10^5$

$1 \leq a_i, b_i \leq N$, $a_i \neq b_i$

$1 \leq d_i \leq 10^6$

$1 \leq Q \leq 2 \times 10^5$

クエリ $1$ において、$1 \leq x \leq N$ を満たす。また、このクエリ時点で、すいばかくんがいる町と町 $x$ は通行可能な $1$ つの道で直接つながれている。

クエリ $2$ において、$1 \leq y \leq N-1$ を満たす。また、このクエリ時点で、道 $y$ は通行可能である。

クエリ $3$ において、$1 \leq z \leq N-1$ を満たす。また、このクエリ時点で、道 $z$ は封鎖されている。

$i$ 番目のクエリで出力すべき町の個数を $c_i$ とするとき、$\sum_{i=1}^{Q}c_i \leq 4 \times 10^5$ を満たす。

入力はすべて整数である。

入力

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

$N$
$a_1$ $b_1$ $d_1$
$a_2$ $b_2$ $d_2$
$:$
$a_{N-1}$ $b_{N-1}$ $d_{N-1}$
$Q$
$Query_1$
$Query_2$
$:$
$Query_Q$

$Query_i$ は問題文にある $3$ 種類のクエリのいずれかの形式で与えらえる。

出力

$Q$ 行出力せよ。
$i$ 行目には、$i$ 番目クエリ後の出力すべき町の番号が昇順で $v_1$, $v_2$, $...$, $v_c$ の $c$ 個であるとき、以下のように空白区切りで出力せよ。

$c$ $v_1$ $v_2$ $...$ $v_c$

入力例 1

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

出力例 1

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

$1$ つ目のクエリで、道 $5$ が封鎖されます。この直後に、すいばかくんが到達可能な町は $1$, $2$, $3$, $4$, $6$ であり、すいばかくんがいる町 $1$ からの距離はそれぞれ $0$, $1$, $2$, $2$, $3$ なので、答えは町 $6$ になります。

$2$ つ目のクエリで、道 $3$ が封鎖されます。この直後に、すいばかくんが到達可能な町は $1$, $2$, $3$, $4$ であり、すいばかくんがいる町 $1$ からの距離はそれぞれ $0$, $1$, $2$, $2$ なので、答えは町 $3$, $4$ になります。

$3$ つ目のクエリで、すいばかくんは町 $2$ に移動します。この直後に、すいばかくんが到達可能な町は $1$, $2$, $3$, $4$ であり、すいばかくんがいる町 $2$ からの距離はそれぞれ $1$, $0$, $1$, $1$ なので、答えは町 $1$, $3$, $4$ になります。

$4$ つ目のクエリで、道 $5$ が通行可能になります。この直後に、すいばかくんが到達可能な町は $1$, $2$, $3$, $4$, $5$ であり、すいばかくんがいる町 $2$ からの距離はそれぞれ $1$, $0$, $1$, $1$, $2$ なので、答えは町 $5$ になります。

$5$ つ目のクエリで、すいばかくんは町 $4$ に移動します。この直後に、すいばかくんが到達可能な町は $1$, $2$, $3$, $4$, $5$ であり、すいばかくんがいる町 $4$ からの距離はそれぞれ $2$, $1$, $2$, $0$, $1$ なので、答えは町 $1$, $3$ になります。

入力例 2

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

出力例 2

1 1
1 5
1 5
2 1 5
1 5
2 3 5
H: 魔法使いの塔

問題文

あなたが持っている魔導書には、 $N$ 個の魔法が載っています。

魔法には $1$ から $N$ までの番号がついていて、魔法 $i (1 \le i \le N)$ のコストははじめ整数 $A_i$ です。

あなたの目的は、魔導書に載っているすべての魔法を $1$ 回ずつ唱えることです。

魔法を唱えはじめる前に、あなたはクッキーを $K$ 枚食べることができます。クッキーを食べるのに時間はかかりません。

あなたはクッキーを $1$ 枚食べるたびに、コストが正の魔法を $1$ つ選び、そのコストを $1$ 下げることができます。

クッキーを食べたあと、あなたは魔法を唱え始めます。

あなたの MP ははじめ $M$ です。あなたは以下のどちらかを繰り返して、 $N$ 個の魔法を任意の順番で $1$ 回ずつ唱えます。

整数 $i (1 \le i \le N)$ を $1$ つ選び、魔法 $i$ を唱える。ただし、 現在の MP は魔法 $i$ のコスト以上でなければならない。

時間は経過しない。

MP を魔法 $i$ のコストだけ消費する。

休憩する。ただし、現在の MP を $m$ とすると、 $m < M$ でなければならない。

時間が $M - m$ 経過する。

MP を $1$ 回復する。

あなたが $N$ 個の魔法を任意の順番で $1$ 回ずつ唱えるためにかかる時間の最小値を求めてください。

制約

$1 \leq N \leq 10^5$

$1 \leq M \leq 10^6$

$0 \leq K \leq \sum_{i=1}^{N} A_i$

$1 \leq A_i \leq M$

入力はすべて整数である。

入力

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

$N$ $M$ $K$
$A_1$ $A_2$ $\ldots$ $A_N$

出力

$N$ 個の魔法を $1$ 回ずつ唱えるためにかかる時間の最小値を出力せよ。

入力例1

2 4 0
2 4

出力例1

3

どの魔法のコストも減らすことができないので、このまま魔法を唱えていくことにします。

まず、魔法 $1$ を唱えます。 MP を $2$ 消費するので、残りの MP は $4 - 2 = 2$ になります。

魔法 $2$ を唱えるには MP が $4$ 必要なので、このままでは魔法 $2$ を唱えることはできません。

休憩します。時間が $4 - 2 = 2$ 秒経過します。 MP を $1$ 回復するので、残りの MP は $2 + 1 = 3$ になります。

休憩します。時間が $4 - 3 = 1$ 秒経過します。 MP を $1$ 回復するので、残りの MP は $3 + 1 = 4$ になります。

魔法 $2$ を唱えます。 MP を $4$ 消費するので、残りの MP は $4 - 4 = 0$ になります。

以上より、時間を $2 + 1 = 3$ 秒かければ、魔法 $1,2$ を $1$ 回ずつ唱えることができます。
これより短い時間ですべての魔法を唱えることはできないので、求める答えは $3$ となります。

入力例2

3 9 6
2 3 9

出力例2

0

最終的な魔法のコストを $2, 2, 4$ とすると、休憩することなくすべての魔法を唱えることができます。

入力例3

3 16 2
6 9 9

出力例3

21

入力例4

2 1000000 0
1000000 1000000

出力例4

500000500000

答えは 32bit 整数で表せる範囲に収まらないことがあります。
I: 偶奇ソート

問題文

$0$ から $N-1$ までの整数を並び替えた長さ $N$ の順列 $P$ が与えられます。

以下の操作を最大 $30$ 回まで行って、 $P$ を昇順に並べ替えてください。

操作

$1$ 回の操作では、次の 1 から 4 を順に行う。

0 と 1 からなる長さ $N$ の文字列 $S$ と、整数 $t$ ( $t = 0$ または $t = 1$ ) を宣言する。

空の数列 $A, B$ を用意し、整数 $i$ を $1$ から $N$ まで動かしながら以下を行う。

$S_i$ が 0 のとき、何もしない。

$S_i$ が 1 のとき、

$P_i$ が偶数ならば $A$ の末尾に $P_i$ を追加する。

$P_i$ が奇数ならば $B$ の末尾に $P_i$ を追加する。

数列 $C$ を以下のように定義する。

$t = 0$ のとき、 $C$ は $A$ と $B$ をこの順に連結したものとする。

$t = 1$ のとき、 $C$ は $B$ と $A$ をこの順に連結したものとする。

整数 $i$ を $1$ から $N$ まで動かしながら以下を行う。

$S_i$ が 0 のとき、何もしない。

$S_i$ が 1 のとき、 $P_i$ を $C$ の先頭の要素に置き換え、 $C$ の先頭の要素を消す。

例えば、$N = 7, P = {0, 4, 2, 3, 6, 5, 1}$ とします。

$S$ を "1101101" とし、$t = 1$ とした操作を $1$ 回行うと、以下の図のように $P = {3, 1, 2, 0, 4, 5, 6}$ となります。

制約

$1 \leq N \leq 15000$

$P$ は $0$ から $N-1$ までの整数を並び替えた順列

入力

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

$N$
$P_1$ $P_2$ $\ldots$ $P_N$

出力

$30$ 回以内の操作で $P$ を昇順に並べ替えるような操作列の $1$ つを以下の形式で出力せよ。このような操作列は複数存在するかもしれないが、どれを出力しても正答となる。

$1$ 行目には、操作を行う回数 $K$ を出力せよ。ただし、 $0 \le K \le 30$ でなければならない。

$i + 1$ 行目 $(1 \le i \le K)$ には、 $i$ 回目の操作で宣言する整数 $t_i (t_i = 0,1)$ および長さ $N$ の文字列 $S_i$ をこの順に出力せよ。

$K$
$t_1$ $S_1$
$t_2$ $S_2$
$\vdots$
$t_K$ $S_K$

入力例1

7
0 4 2 3 6 5 1

出力例1

1
1 0100101

操作を行うと、$A = { 4, 6 }, B = { 1 }$ となり、 $t = 1$ より $C = { 1, 4, 6 }$ となります。

$P$ の要素を $C$ によって置き換えると、 $P = { 0, 1, 2, 3, 4, 5, 6 }$ となるので、この操作で $P$ を昇順に並べ替えることができます。

入力例2

4
1 0 3 2

出力例2

2
0 1100
0 0011

例えば以下のような出力も正答となります。

2
0 1111
1 0110

入力例3

1
0

出力例3

0

操作を行わなくても構いません。
K: トーナメント

問題文

京都大学クスノキ前にて、$2$ 人用対戦ゲームのトーナメントが行われようとしています。

このトーナメントの参加者は $2^N$ 人いて、 $1$ から $2^N$ までの番号がついています。

参加者のうちの $2$ 人が戦った時の勝敗は、$0$ と $1$ からなる長さ $2^N-1$ の文字列 $S$ によって表されます。

人 $x$ と人 $y$ $(1 \le x < y \le 2^N)$ が戦ったとき、

$S_{y-x} = 0$ のとき、人 $x$ が勝ち、

$S_{y-x} = 1$ のとき、人 $y$ が勝つ

ことが分かっています。

トーナメントは参加者が一列に並ぶことで始まり、以下の通りに進行します。

列の先頭から $2$ 人ずつペアを作る。すべてのペアについて、ペア内の $2$ 人が戦う。

1 の対戦で勝った人は列に残り、負けた人は列から抜ける。

残っている人が $2$ 人以上いるときは、列を詰めて 1 に戻る。

残っている人が $1$ 人となったら、その人が優勝者となる。

いま、参加者は初期状態として、先頭から $i$ 番目 $(1 \le i \le 2^N)$ が人 $P_i$ となるように並んでいます。

$0 \le k \le 2^N-1$ を満たすすべての整数 $k$ について、以下の問題を解いてください。

初期状態から先頭 $k$ 人が、その順番を変えずに列の末尾に移動する。

つまり、移動後の列における参加者の番号を先頭から挙げていくと、 $P_{k+1}, P_{k+2}, ..., P_{2^N}, P_1, P_2, ..., P_k$ となる。

移動後の列からトーナメントを始めたときの、優勝者の番号を求めよ。

制約

$1 \leq N \leq 18$

$N$ は整数である。

$S$ は $0$ と $1$ からなる長さ $2^N-1$ の文字列である。

$P$ は $1$ から $2^N$ までの整数を並べ替えた順列である。

入力

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

$N$
$S_1S_2 \ldots S_{2^N-1}$
$P_1$ $P_2$ $\ldots$ $P_{2^N}$

出力

$2^N$ 行出力せよ。

$i$ 行目 $(1 \le i \le 2^N)$ には、$k = i-1$ としたときの上記の問題の答えを出力せよ。

入力例1

2
100
1 4 2 3

出力例1

1
2
1
2

例えば $k = 2$ としたとき、移動後の列における参加者の番号を先頭から挙げていくと、 $2, 3, 1, 4$ となります。

人 $2$ と 人 $3$ が戦うと、 $S_1 = 1$ より人 $3$ が勝ちます。

人 $1$ と 人 $4$ が戦うと、 $S_3 = 0$ より人 $1$ が勝ちます。

人 $3$ と 人 $1$ が戦うと、 $S_2 = 0$ より人 $1$ が勝ちます。

したがって、 $k = 2$ の場合の優勝者は、人 $1$ となります。

入力例2

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

出力例2

16
1
16
2
16
12
10
14
16
1
16
2
16
12
10
14

入力例3

1
0
1 2

出力例3

1
1
L: 木の彩色

問題文

モデューロさんは木の絵を描くのがとてもうまいです。

モデューロさんは長い年月をかけて頂点が $N$ 個である木の絵を書きました。
この木の頂点には $1$ から $N$ までの番号がついており、頂点 $a_i$ と $b_i$ $(1 \leq i \leq N-1)$ は直接辺でつながれています。
すべての頂点には色がまだ塗られていません。

モデューロさんが書いたこの木の絵はたくさんの人を感動させ、有名な美術館に飾られることが決まりました。

この美術館には順に $N$ 人の人が来場します。モデューロさんは来場者特典として、それぞれの人に $1$ 枚ずつ木の絵のコピーを配布することにしました。

さらに、来場者に満足してもらうため、配布する木の絵の頂点すべてに色を塗ることにしました。
$k$ 番目 $(1 \leq k \leq N)$ に来場する人は、以下の 2 条件を共に満たす絵が配布されたときにのみ満足します。

最短距離が $k$ の倍数である任意の 2 頂点は、同じ色で塗られている。

最短距離が $k$ の倍数でない任意の 2 頂点は、異なる色で塗られている。

モデューロさんが持っている色の数は無限にあります。また、それぞれのコピーで色の塗り方が違っても構いません。

それぞれの来場者に対し、その来場者を満足させるように頂点を塗ることができるかどうか判定してください。

制約

$1 \leq N \leq 10^5$

$1 \leq a_i, b_i \leq N$

入力はすべて整数である

入力によって与えられるグラフが木であることは保証される。

入力

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

$N$
$a_1$ $b_1$
$a_2$ $b_2$
$\vdots$
$a_{N-1}$ $b_{N-1}$

$1$ 行目には、木の頂点数を表す整数 $N$ が与えられる。

$2$ 行目から $N$ 行目には、木の辺の情報が与えられる。このうち $i+1(1 \leq i \leq N-1)$ 行目には、頂点 $a_i$ と $b_i$ が辺でつながっていることを示す 2 つの整数 $a_i,b_i$ が与えられる。

出力

以下を満たす 0 または 1 からなる文字列 $S = s_1 s_2 \ldots s_N$ を出力せよ。

$s_k = 1$ : $k$ 番目の来場者が満足できるよう与えられた木の絵の頂点に彩色できる

$s_k = 0$ : $k$ 番目の来場者が満足できるよう与えられた木の絵の頂点に彩色できない

入力例 1

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

出力例 1

1100111

入力例1の木は以下の図のようになります。

例えば、$k=2$ の時、以下のように塗れば条件を満たします。

また、$k=5$ の時、以下のように塗れば条件を満たします。

入力例 2

6
1 2
2 3
3 4
4 5
5 6

出力例 2

111111

入力例 3

1

出力例 3

1
M: 文字列集合

問題文

以下の条件を満たす文字列集合 $S$ のうち、要素数が最大となるものを $1$ つ構成してください。

$S$ に含まれる文字列の長さは $1$ 以上 $N$ 以下である。

$S$ に含まれる文字列の長さはそれぞれ異なる。

$S$ に含まれる文字列は、文字 0, 1 のみからなる。

$S$ に含まれるどの $2$ つの文字列についても、一方がもう一方の部分文字列とならない。

ただし、文字列 $x$ の部分文字列とは、 $x$ の先頭と末尾から $0$ 文字以上の文字を取り除くことで得られる文字列のことを言います。

制約

$1 \leq N \leq 300$

$N$ は整数である

入力

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

$N$

出力

条件を満たす文字列集合 $S$ のうち、要素数が最大となるものを $1$ つ出力せよ。このような $S$ は複数存在する可能性があるが、どれを出力しても正答となる。

具体的には、以下の形式で出力せよ。

$1$ 行目に $S$ の要素数 $K$ を出力せよ。

$2$ 行目から $K+1$ 行目に $S$ の要素をすべて出力せよ。各行には $S$ の要素を $1$ つ出力せよ。

$K$
$S_1$
$S_2$
$\vdots$
$S_K$

入力例1

2

出力例1

2
0
11

文字列集合 $\{0, 11\}$ は、条件を満たす集合の中で要素数が最大となるものです。

入力例2

1

出力例2

1
0
Fibonacci Number

Write a program which prints $n$-th fibonacci number for a given integer $n$. The $n$-th fibonacci number is defined by the following recursive formula:

\begin{equation*}
fib(n)= \left \{
\begin{array}{ll}
1　 & (n = 0) \\
1　 & (n = 1) \\
fib(n - 1) + fib(n - 2) & \\
\end{array}
\right.
\end{equation*}

Input

An integer $n$ is given.

output

Print the $n$-th fibonacci number in a line.

Constraints

$0 \leq n \leq 44$

Sample Input 1

3

Sample Output 1

3
Matrix-chain Multiplication

The goal of the matrix-chain multiplication problem is to find the most efficient way to multiply given $n$ matrices $M_1, M_2, M_3,...,M_n$.

Write a program which reads dimensions of $M_i$, and finds the minimum number of scalar multiplications to compute the maxrix-chain multiplication $M_1M_2...M_n$.

Input

In the first line, an integer $n$ is given. In the following $n$ lines, the dimension of matrix $M_i$ ($i = 1...n$) is given by two integers $r$ and $c$ which respectively represents the number of rows and columns of $M_i$.

Output

Print the minimum number of scalar multiplication in a line.

Constraints

$1 \leq n \leq 100$

$1 \leq r, c \leq 100$

Sample Input 1

6
30 35
35 15
15 5
5 10
10 20
20 25

Sample Output 1

15125
Longest Common Subsequence

For given two sequences $X$ and $Y$, a sequence $Z$ is a common subsequence of $X$ and $Y$ if $Z$ is a subsequence of both $X$ and $Y$. For example, if $X = \{a,b,c,b,d,a,b\}$ and $Y = \{b,d,c,a,b,a\}$, the sequence $\{b,c,a\}$ is a common subsequence of both $X$ and $Y$. On the other hand, the sequence $\{b,c,a\}$ is not a longest common subsequence (LCS) of $X$ and $Y$, since it has length 3 and the sequence $\{b,c,b,a\}$, which is also common to both $X$ and $Y$, has length 4. The sequence $\{b,c,b,a\}$ is an LCS of $X$ and $Y$, since there is no common subsequence of length 5 or greater.

Write a program which finds the length of LCS of given two sequences $X$ and $Y$. The sequence consists of alphabetical characters.

Input

The input consists of multiple datasets. In the first line, an integer $q$ which is the number of datasets is given. In the following $2 \times q$ lines, each dataset which consists of the two sequences $X$ and $Y$ are given.

Output

For each dataset, print the length of LCS of $X$ and $Y$ in a line.

Constraints

$1 \leq q \leq 150$

$1 \leq$ length of $X$ and $Y$ $\leq 1,000$

$q \leq 20$ if the dataset includes a sequence whose length is more than 100

Sample Input 1

3
abcbdab
bdcaba
abc
abc
abc
bc

Sample Output 1

4
3
2

Reference

Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. The MIT Press.