A - ハンバーガー(Hamburger)

Time Limit: 1 sec / Memory Limit: 256 MB

問題文

kyuridenamidaは, K2PCというレストランでバイトをしている.
彼は受付を担当しているが, 時給が810円と低いので, 時給が893円の厨房を担当したいと考えている.

厨房では, K2PCレストランの(唯一の商品であり)目玉商品であるK2PCハンバーガーを作る仕事が行われている.

ハンバーガーを1個作るには, 肉が1枚, パンが2枚, トッピング類が3個必要である.
今, 肉がa枚, パンがb枚, トッピング類がc個あるとする.
ハンバーガーをN個作るためには, それぞれの材料が残りいくつ必要か求めよ.


入力

a b c
N
  • 1行目に, 今ある肉の枚数, パンの枚数, トッピングの個数を表す整数がこの順に入力される.
  • 2行目に, 作りたいハンバーガーの個数を表す整数が入力される.

出力

それぞれの材料がいくつ必要かを, 肉の枚数, パンの枚数, トッピングの個数の順でスペース区切りで出力せよ.(20:03 修正)
改行を忘れないように注意すること.

制約

  • 0 ≦ a ≦ 1000 今ある肉の枚数
  • 0 ≦ b ≦ 2000 今あるパンの枚数
  • 0 ≦ c ≦ 3000 今あるトッピング類の個数
  • 0 ≦ N ≦ 1000 作りたいハンバーガーの個数

入力例 1

0 2 4
1

出力例 1

1 0 0

入力例 2

3 4 8
10

出力例 2

7 16 22

(Story) kagamiz
(Problem) kagamiz
(Tester) fura2
B - ビットマニア(BITMANIA)

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

BITMANIAはK2PC社から発売されているDJシミュレーションゲームである.
BITMANIAでは, 与えられた譜面(ノートの集まり, 図1)を7つの鍵盤を押すことで音楽を演奏するゲームであり, kagamiz君はある押し方(以下, 運指と呼ぶ)でプレイする.

  • kagamiz君には合計10本の指がある.
  • 最初に10本の指の内の7本を, それぞれの指がどの鍵盤を押すかを1:1対応させるように決める.
  • これを完全固定運指と呼ぶことにする. kagamiz君は音楽の開始から終了まで常にその運指でプレイする.
1

kagamiz君は, ある音楽をノーミスでクリアできるか確かめたくなった.
kagamiz君のそれぞれの指には, それぞれ縦連耐性というものがある.
縦連耐性とは, 連続(隙間無く)落下してくるノートを最大何連続まで耐えられるかという指標である. もしその回数を超えてしまうと, 耐えられなくなり, ミスしてしまう.

あなたの仕事は, ゲーム中のある音楽の譜面データが与えられるので, 運指を工夫した場合にクリアできるか確かめることである.
kagamiz君は非常に優秀なプレイヤーなので, 縦連耐性以外のどんな要素によるミスも引き起こさない.
また, 運指は10本の指の内, 7本が, それぞれの鍵盤に1:1対応しているならどんなものでも構わない.


入力

N
a_1 a_2 ... a_9 a_{10}
c_{11}c_{12}...c_{17}
c_{21}c_{22}...c_{27}
...
...
c_{N1}c_{N2}...c_{N7}
  • 1行目には正の整数Nが書かれている.
  • 2行目には, 正の整数a_1, a_2, a_3, ..., a_{10}が空白区切りで書かれている.
  • 3~3+N-1行目には, 音楽の譜面が書かれている. もし譜面のある位置にノートがあるならX, そうでないならば-が書かれている.

出力

kagamiz君が与えられた音楽の譜面をノーミスクリアできる場合YES, そうでないならばNOを出力しろ.
最後に改行が必要なことに注意せよ.

制約

  • 1 ≦ N ≦ 100 音楽の譜面データの縦の長さ
  • 1 ≦ a_i ≦ 100 a_ii番目の指の縦連耐性
  • 譜面を表す記号はXまたは-のいずれかである.
  • 譜面データは, 最後に落ちてくるノートから与えられることに注意せよ.

入力例 1

13
1 1 2 1 1 1 1 1 1 3
-X--X-X
-------
X--X-X-
--X-X--
XX-----
--X-X--
X----X-
--X----
--X----
-------
--X----
--X----
X-XX-X-

出力例 1

YES

これは, 図1で与えられている譜面と同じものである.
たとえば,

  • 1番目の指を鍵盤1
  • 2番目の指を鍵盤2
  • 10番目の指を鍵盤3
  • 3番目の指を鍵盤4
  • 4番目の指を鍵盤5
  • 5番目の指を鍵盤6
  • 6番目の指を鍵盤7
と割り当てた場合, kagamiz君はこの譜面をノーミスクリアすることができる.


入力例 2

2
1 1 1 1 2 2 2 3 3 3
XXXXXXX
XXXXXXX

出力例 2

NO

この譜面をクリアするには, 縦連耐性が2以上の指を7本選ばなければならない.
しかし, 縦連耐性が2以上の指は6本しかないのでkagamiz君はこの譜面をノーミスクリアすることが出来ない.


(Story) kyuridenamida
(Problem) kyuridenamida
(Tester) fura2
C - 紅茶(Tea)

Time Limit: 1 sec / Memory Limit: 256 MB

問題文

kagamizは, 紅茶を飲みながら, 次のような問題を解いていた.

"2 つの正の整数の組を次のように並べるとき, (m, n)は何番目にあるか.
(1, 1), (2, 1), (1, 2), (3, 1), (2, 2), (1, 3), (4, 1), (3, 2), (2, 3), (1, 4), (5, 1), ..."

この問題は彼には簡単すぎたので, 彼はこの問題を基に次のような問題を考えた.

"上の様な整数の組で, i 番目の組の成分と j 番目の組の成分をそれぞれ足した組は何番目にあるか.
すなわち, 上記の整数の組のi 番目を(a_i, b_i), j番目を(a_j, b_j)と表すとき, (a_i+a_j, b_i+b_j) は何番目にあるか."

あなたの仕事は, kagamizから出題されたこの問題を解くことである.


入力

i j
  • 1行目には正の整数 i, j が空白を区切りとして書かれている.

出力

i 番目の組の成分と j 番目の組の成分をそれぞれ足した組が何番目にあるかを, 1行に出力せよ.
改行を忘れないように注意せよ.


制約

  • 1 ≦ i, j ≦ 10^8 整数の組の番号
  • i=j となることがある.

入力例 1

1 1

出力例 1

5

1番目の組(1, 1) の成分と1 番目の組(1, 1)の成分をそれぞれ足すと(2, 2) となる.
(2, 2) はこの並びの5 番目の組なので, 5 を出力する.


入力例 2

3 2

出力例 2

13

入力例 3

114 514

出力例 3

1155

(Story) kagamiz
(Problem) kagamiz
(Tester) fura2
D - 虫歯(Cavity)

Time Limit: 4 sec / Memory Limit: 256 MB

問題文

kyuridenamidaは, お菓子を食べ過ぎて1本の歯を虫歯にしてしまった.
その歯がとても痛むので歯医者さんに治療してもらったところ, 歯の神経のうち N 箇所を治療してもらえた.

kyuridenamidaの歯の神経は, 図1に示すように, 深さがKの完全二分木になっている.
(二分木については, Wikipediaのページなどを参照せよ.)

1

彼の神経を表す二分木で, 深さが i で左から j 番目の神経を (i,j)と表す(図 2 ).
このとき, 根に当たる神経 (0,1) に, 先祖を遡ってたどり着ける神経を, 虫歯神経と呼ぶこととする.
ただし, 虫歯神経の先祖が既に治療されている場合, その虫歯神経は根の神経 (0, 1) に辿りつけない.
また, (0, 1)自身が治療されていなければ, (0, 1) が自身にたどり着けるものとする.

2

根に辿り着ける虫歯神経の個数の総和を歯の痛みとする.
あなたの仕事は, kyuridenamidaの虫歯の情報が与えらるので, その歯の痛みをkyuridenamidaに教えて上げることである.


入力

K
N
p_1 q_1
p_2 q_2
.
.
.
p_N q_N
  • 1 行目には, 神経の深さを表す整数Kが書かれている.
  • 2 行目には, 治療された神経の数を表す整数Nが書かれている.
  • 続く N 行には, 治療済みの神経の情報をあらわす, 整数 p_iq_i (1 ≦ i ≦ N) が空白区切りで書かれている.
    これは, 場所 (p_i,q_i) の神経が治療されていることを表す.

出力

痛みを伝える神経の数を, 1 行に出力せよ.
(答えが 32 bit整数型に収まらない可能性があることに注意せよ.)

制約

  • 1 ≦ K ≦ 50 歯の神経の深さ
  • 0 ≦ N ≦ 10^5 治療済みの神経の個数
  • 0 ≦ p_i ≦ K  治療済み神経 i の深さ
  • 1 ≦ q_i ≦ 2^{p_i} 治療済み神経 i の, 深さ p_iでの位置
  • p_i = p_j であれば, q_i ≠ q_jが保証されている.

部分点

配点の 40% 分については, N ≦ 1000 を満たす.


入力例 1

1
1
1 1

出力例 1

2

入力例 2

9
0

出力例 2

1023

入力例 3

3
2
1 2
3 7

出力例 3

8

ヒント

入出力例3に対応する図は以下のとおりである.
ここで, 図の青丸は治療された神経を表し, 赤の×印は根に辿り着ける虫歯神経を表す.

(Story) kagamiz
(Problem) kagamiz
(Tester) fura2
E - お気に入りの数2(Favorite Number2)

Time Limit: 1 sec / Memory Limit: 256 MB

問題文

2 以上 n 以下の正整数 x に対して, 以下の操作が許されている.

  • x+1n 以下のとき, x + 1 を新たな x とする.
  • \sqrt{x} が整数のとき, \sqrt{x} を新たな x とする.

例えば, x = 2 のとき, 3を新しい x とすることができる.
x = 4 のとき, (2,5) のいずれかを新しい x とすることができる.

そこで, kagamizは x=2 として開始し, この操作で許される全ての遷移の仕方を, 少なくともそれぞれ 1 回ずつ以上行って 再び x=2 に戻ってくるような方法のうち, 操作回数が最小になる場合にかかる操作回数を知りたい.
あなたの仕事は, そのような方法が存在するかどうかと, 存在するならばその最小操作回数をkagamizに教えてあげることである.


入力

n
入力では, 整数 n1 つだけ与えられる.

出力

最小となる操作回数を出力せよ.
もし, そのような方法が存在しない場合は-1を出力せよ.
もしどのような操作も許されていない場合, 一切操作を行わなくても "この操作で許される全ての遷移の仕方を, 少なくともそれぞれ 1 回ずつ以上行った", とみなしてよい.

制約

  • 2 ≦n ≦ 10^{12} たどり着ける数の上限値

入力例 1

9

出力例 1

10
許された遷移の仕方は 9 つあり, 以下の通りである.
  • 2→3
  • 3→4
  • 4→5
  • 5→6
  • 6→7
  • 7→8
  • 8→9
  • 4→2
  • 9→3
これらを少なくとも1回以上行って, x=2 として終了するのに必要な最小操作回数は 10 回である.

入力例 2

5

出力例 2

-1

入力例 3

4

出力例 3

3

(Story) kyuridenamida
(Problem) kyuridenamida
(Tester) fura2