A - 2015

Time Limit: 2 sec / Memory Limit: 256 MB

Problem Statement

すぬけ君は、20152 進数で表すと 11111011111 となり回文になっていることに気づいた。 整数 N を (余計な 0 をつけない) 2 進数で表したとき、回文になっているかどうか判定せよ。 ただし、左から呼んでも右から読んでも同じ文字列を回文という。


Constraints

  • 1 \leq N \leq 10^9

Input Format

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

Output Format

Yes または No と出力せよ。

Sample Input 1

2015

Sample Output 1

Yes

Sample Input 2

2016

Sample Output 2

No
B - 鏡餅

Time Limit: 2 sec / Memory Limit: 256 MB

Problem Statement

N 個の餅がある。i 番目の餅の重さは a_i である。 すぬけ君は、この中からいくつかの餅を選び好きな順番で積み重ねて、餅の塔を作ることにした。 ただし、ある餅の上に乗っている餅の重さの合計がそのもちの重さ以上になると、餅が割れてしまう。 餅の塔を最大何段にすることができるか求めよ。


Constraints

  • 1 \leq N \leq 1000
  • 1 \leq a_i \leq 10^9

Input Format

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

Output Format

答えを一行に出力せよ。

Sample Input 1

5
3
20
5
8
6

Sample Output 1

3
たとえば、上から順に重さ 3, 5, 20 の餅を積めばよい。
C - 文字列の書き換え

Time Limit: 2 sec / Memory Limit: 256 MB

Problem Statement

すぬけ君は、新年のプレゼントに文字列 s をもらった。以下の操作を繰り返すことで s をすぬけ君の好きな文字列 t にできるかどうか判定せよ。

操作: s から文字を一つ選び、その直後に選んだ文字とは異なる文字を一つ挿入する。


Constraints

  • 1 \leq |s| \leq |t| ≤ 5000
  • s, t は英小文字のみからなる

Input Format

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

Output Format

Yes または No と出力せよ。

Sample Input 1

snuke
snukent

Sample Output 1

Yes

Sample Input 2

snuke
ssnuke

Sample Output 2

No
D - ジャンプ

Time Limit: 2 sec / Memory Limit: 256 MB

Problem Statement

すぬけ君が、一次元の無限に長い道路の上に立っている。すぬけ君は、N 種類のジャンプをすることができる。i 番目のジャンプでは、a_i に対して対称な位置にジャンプできる (場所 x にいるとき、場所 2a_i - x に移動する)。

Q 種類のクエリに答えよ。i 番目のクエリでは、s_i から t_i に行くのに最小何回ジャンプすればよいか求めよ。ただしジャンプだけで到達できない場合には、代わりに -1 と出力せよ。


Constraints

  • 1 \leq N \leq 200
  • 0 \leq a_1 < ... < a_N \leq 10000
  • 1 \leq Q \leq 100000
  • 0 \leq s_i, t_i \leq 10000

Input Format

入力は以下の形式で標準入力から与えられる。
N
a_1
:
a_N
Q
s_1 t_1
:
s_Q t_Q

Output Format

各クエリに対し、答えを一行に出力せよ。

Sample Input 1

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

Sample Output 1

-1
-1
2
2
-1
-1
0
3
1
0
E - ひも

Time Limit: 2 sec / Memory Limit: 256 MB

Problem Statement

N 人の人が寝ている。すぬけ君は、N-1 本のひもでこの人たちを結びつけることにした。

  • それぞれのひもは、両端を異なる人に結びつけることによって、その二人を結びつけることができる。
  • どの二人も直接的または間接的にひもでつながっているようにしたい。
  • i 番目の人にはちょうど a_i 本のひもがつながっているようにしたい。

ひもの結び付け方は何通りあるか、\rm{mod}\ 1,000,000,007 で求めよ。

ひもは区別がつかないものとする。

Constraints

  • 2 \leq N \leq 100000
  • 1 \leq a_i \leq 3

Input Format

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

Output Format

答えを一行に出力せよ。

Sample Input 1

9
1
3
2
1
3
1
2
1
2

Sample Output 1

1260
F - 番号札

Time Limit: 2 sec / Memory Limit: 256 MB

Problem Statement

すぬけ君が番号札を N 個持っている。i 番目の番号札には数字 a_i が書いてあり、色は c_i である。

すぬけ君は、ある正整数 M が存在し、数字と色の間には以下のような関係があるのではないかと考えた。

  • 1,\ ...,\ M は同じ色で塗られている。
  • M+1,\ ...,\ 2M は別の同じ色で塗られている。
  • 2M+1,\ ...,\ 3M は別の同じ色で塗られている。
  • ...

M として何通りの数が考えられるか求めよ。ただし、M の値が無限通り考えられる場合には、-1 を出力せよ。


Constraints

  • 1 \leq N \leq 20
  • 1 \leq a_1 < ... < a_N \leq 10^9
  • 1 \leq c_i \leq 20

Input Format

入力は以下の形式で標準入力から与えられる。
N
a_1 c_1
:
a_N c_N

Output Format

答えを一行に出力せよ。

Sample Input 1

4
27 2
2000 4
2015 4
2100 1

Sample Output 1

277

Sample Input 2

3
1 1
2 2
3 1

Sample Output 2

0
G - ロボット

Time Limit: 2 sec / Memory Limit: 256 MB

Problem Statement

すぬけ君は N 個のロボットを持っている。最初に、i 番目のロボットは座標 (x_i, y_i) に向き d_i の方向を向いて止まっている。 d_iU, D, L, R のいずれかであり、それぞれ y 座標の正の方向、 y 座標の負の方向、 x 座標の負の方向、 x 座標の正の方向を表す。

このロボットは、何か (すぬけ君または他のロボット) に触れると向いている方向に毎秒 1 の速さで動き出す性質がある。また、このロボットはすり抜けることができるので、動いているロボットが他のロボットに衝突しても止まったり運動の向きや速さが変わることはない。

すぬけ君は、時刻 0 にロボット 1 をさわった。時刻 T のそれぞれのロボットの座標を求めよ。


Constraints

  • 1 ≤ N ≤ 100000
  • 0 ≤ T ≤ 10^{18}
  • 0 ≤ x_i, y_i ≤ 10^9
  • d_iU, D, L, R のいずれかである
  • 時刻 0 にはどの二つのロボットも同じ場所にない

Input Format

入力は以下の形式で標準入力から与えられる。
N T
x_1 y_1 d_1
:
x_N y_N d_N

Output Format

N 行出力せよ。i 行目には、i 番目の点の座標を空白で区切って出力せよ。

Sample Input 1

5 10
1 0 U
3 1 U
1 2 R
1 1 L
0 1 R

Sample Output 1

1 10
3 6
9 2
-8 1
8 1
H - 空港

Time Limit: 2 sec / Memory Limit: 256 MB

Problem Statement

すぬけ君は、空港を N 個持っている。i 番目の空港の座標は (x_i, y_i) である。すぬけ君は、あまり近い空港の間に飛行機を飛ばしても意味がないので、マンハッタン距離 ((x_1, y_1)(x_2, y_2) のマンハッタン距離は |x_1 - x_2| + |y_1 - y_2|) が X 以上である全ての空港のペアの間に飛行機を飛ばすことにした。どの空港からどの空港へも飛行機だけを使っていけるようになる最大の X を求めよ。

Constraints

  • 2 \leq N \leq 100000
  • 0 \leq x_i, y_i \leq 10^9
  • 二つの空港が同じ座標にあることはない。

Input Format

入力は以下の形式で標準入力から与えられる。
N
x_1 y_1
:
x_N y_N

Output Format

答えを一行に出力せよ。

Sample Input 1

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

Sample Output 1

9
I - マージ

Time Limit: 4 sec / Memory Limit: 512 MB

Problem Statement

すぬけ君は、配列 PQ をマージして配列 R を作ることにした。

  • 最初に、R は空である。
  • P または Q が空でない間、P または Q のうち空でない配列 (両方空でない場合は好きなほう) を選び、その配列の左端の要素を取り出し、R の右端にくっつける。
P, Q が与えられたとき、R としてできる配列が何通り考えられるか、\rm{mod}\ 1,000,000,007 で求めよ。 ただし、P, Q はそれぞれ 1 から N の順列になっている。

Constraints

  • 1 \leq N \leq 2000
  • P, Q1 から N の順列である。

Input Format

入力は以下の形式で標準入力から与えられる。
N
P_1 ... P_N
Q_1 ... Q_N

Output Format

答えを一行に出力せよ。

Sample Input 1

4
3 1 2 4
3 1 2 4

Sample Output 1

14

Sample Input 2

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

Sample Output 2

127224

J - ランダムウォーク

Time Limit: 4 sec / Memory Limit: 512 MB

Problem Statement

無限に広い二次元のマス目がある。このマス目の座標は二つの整数 i, j を用いて (i, j) と表せる。

すぬけ君は、(0, 0) から出発し、N 歩ランダムウォークを行う。(i, j) にいるとき、一歩進むとそれぞれ 1/4 ずつの確率で (i-1, j), (i, j-1), (i, j+1), (i+1, j) に進む。

すぬけ君が N 歩ランダムウォークを行ったとき、一回以上訪れたマス目の個数の期待値を E とする。E \times 4^NM で割ったあまりを求めよ。 ただし、(0, 0) は常に一回以上訪れたマス目に含まれるものとする。

Constraints

  • 1 \leq N \leq 5000
  • 10^9 \leq M \leq 2 \times 10^9

Input Format

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

Output Format

答えを一行に出力せよ。

Sample Input 1

2 1000000007

Sample Output 1

44

Sample Input 2

2015 2000000000

Sample Output 2

1892319232
K - チーム戦

Time Limit: 4 sec / Memory Limit: 256 MB

Problem Statement

N 人の人がチーム戦の練習を行うことになった。 すぬけ君は、次の条件を満たすように練習のスケジュールを組みたい。

  • 練習は 1 日以上 N^2 日以下行われる。
  • 毎日 N 人のうち 3 人が練習をする。
  • p と人 q が同時に練習する回数を f(p, q) としたとき、f(p, q) が任意の二人組について等しくなるようにしたい。

Constraints

  • 3 \leq N \leq 1000

Input Format

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

Output Format

条件を満たすスケジュールが存在しない場合、-1 と一行に出力せよ。 存在する場合、スケジュールを一つ以下の形式に従って出力せよ。 ただし、K は練習の日数であり、x_i, y_i, z_ii 日目に練習する人の番号である。 人には 1 から N までの番号がついている。
K
x_1 y_1 z_1
:
x_K y_K z_K

Sample Input 1

5

Sample Output 1

10
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
L - 机のしみ

Time Limit: 2 sec / Memory Limit: 256 MB

Problem Statement

すぬけ君の机には N 個のしみがついている。 i 番目のしみの座標は (x_i, y_i) である。

すぬけ君は、しみを何個か (0 個でもよい) 付け足してしみ全体がボードゲームの盤面となるようにしたい。すぬけ君の作りたい盤は、ある K に対して、K^2 個のしみが K \times K の正方格子状に並んでいるようなものである。ただし、盤面が座標軸に平行である必要はない。

すぬけ君が書き足さなければならないしみの個数の最小値を求めよ。 ただし、机は十分広く、しみが机をはみ出すことはないものとする。

入力は整数であるが、新しく追加するしみの座標は整数でなくても良い。

Constraints

  • 1 \leq N \leq 100000
  • 0 \leq x_i, y_i \leq 10^9
  • 二つのしみが同じ座標にあることはない
  • 入力は全て整数である

Input Format

入力は以下の形式で標準入力から与えられる。
N
x_1 y_1
:
x_N y_N

Output Format

答えを一行に出力せよ。

Sample Input 1

3
1 5
3 6
4 9

Sample Output 1

6
たとえば、(5, 7), (0, 7), (2, 8), (-1, 9), (1, 10), (3, 11) の六ヶ所にしみを付け足せばよい。
M - お絵かき

Time Limit: 10 sec / Memory Limit: 256 MB

Problem Statement

すぬけ君は、絵を描くことにした。 最初に、すぬけ君は細長い白い紙を用意し、1 \times N のマス目に区切った。 次に、すぬけ君は、K 回の操作を行う。 i 回目の操作では、連続する a_i このマス目を選び、全て黒く塗る。 この操作では、選ばれたマス目のうち白かったものは黒に変わり、もともと黒かったマスはそのままである。

すぬけ君が何通りの絵をかくことができるか、\rm{mod}\ 1,000,000,007 で求めよ。 二つの絵はあるマス目の最終的な色が異なるときに異なる絵であるとみなす。 回転して同じになる絵でも異なるものとみなす。


Constraints

  • 1 \leq N \leq 10^9
  • 1 \leq K \leq 4
  • 1 \leq a_i \leq N

Input Format

入力は以下の形式で標準入力から与えられる。
N K
a_1
:
a_K

Output Format

答えを一行に出力せよ。

Sample Input 1

10 2
1
1

Sample Output 1

55
10 個のマスのうち 1 個または 2 個が黒い絵が全て描ける。

Sample Input 2

1000000000 4
2015
2015
123456789
27

Sample Output 2

782767239