alexjercan/bugnet huggingface dataset:
鉄道運賃(Train Fare)

JOI 国には $N$ 個の都市があり，それぞれ $1, 2, ..., N$ の番号が付けられている．都市 1 はJOI 国の首都である．

また，JOI 国には鉄道会社がひとつだけあり，この会社は $M$ 個の路線を運行している．これらの路線にはそれぞれ $1, 2, ..., M$ の番号が付けられており，$i$ 番目 $(1 \leq i \leq M)$ の路線は都市 $U_i$ と都市 $V_i$ を双方向に結んでいる．都市と都市の間を鉄道以外で移動することはできない．また，どの都市からどの都市へもいくつかの路線を乗り継いで移動することができるようになっている．

現在，どの路線の運賃も 1 円である．経営不振に陥った鉄道会社は，今後 $Q$ 年間かけていくつかの路線の運賃を値上げする計画を立てた．この計画では，計画開始から $j$ 年目$(1 \leq j \leq Q)$ の年初めに路線 $R_j$ の運賃を 1 円から 2 円に値上げする予定である．値上げされた路線の運賃は，その後ずっと2 円のままであり，再び値上げすることはない．

ところで，この鉄道会社では，毎年，各都市の住民の満足度調査を行っている．計画開始前は，どの都市の住民もこの鉄道会社に満足しているが，値上げによって不満を持つ住民が現れる可能性がある．

それぞれの年の満足度調査は，その年の値上げの実施後に行う．したがって， $j$ 年目$(1 \leq j \leq Q)$ の満足度調査は，路線 $R_1, R_2, ... , R_j$ の運賃の値上げは完了し，それ以外の路線の運賃は値上げされていない状態で行われることになる． $j$ 年目$(1 \leq j \leq Q)$ の満足度調査では，都市 $k$ $(2 \leq k \leq N)$ の住民は，以下の条件が満たされるとき，そしてそのときに限り鉄道会社に不満を抱く．

その時の運賃で都市 $k$ から首都である都市 $1$ へ移動するときの費用の最小値が，計画開始前の運賃で都市 $k$ から都市 $1$ へ移動するときの費用の最小値よりも大きい．

ただし，いくつかの路線を使って移動するときの費用は，それぞれの路線の運賃の合計である．また，都市 $1$ の住民が鉄道会社に対して不満を抱くことはない．値上げ後の運賃で最小の費用を達成する経路は，計画開始前の運賃で最小の費用を達成する経路と異なる可能性があることに注意せよ．

計画の実行に先立って，今後 $Q$ 年間の住民の満足度調査それぞれにおいて，鉄道会社に不満を抱く住民がいる都市の数を計算しておきたい．

課題

JOI 国の鉄道路線の情報と，運賃の値上げ計画が与えられたとき，それぞれの満足度調査において鉄道会社に不満を抱く住民がいる都市の数を求めるプログラムを作成せよ．

入力

標準入力から以下の入力を読み込め．

1 行目には，3 個の整数 $N, M, Q$ が空白を区切りとして書かれている．これらは，JOI 国には $N$ 個の都市と $M$ 個の路線があり，運賃の値上げ計画が $Q$ 年間に渡ることを表している．

続く $M$ 行のうちの $i$ 行目$(1 \leq i \leq M)$ には，2 個の整数 $U_i$, $V_i$ が空白を区切りとして書かれている．これらは，$i$ 番目の路線が都市 $U_i$ と都市 $V_i$ を結んでいることを表している．

続く $Q$ 行のうちの $j$ 行目$(1 \leq j \leq Q)$ には，整数 $R_j$ が書かれている．これは，計画の $j$ 年目に路線 $R_j$ の運賃を値上げすることを表している．

出力

標準出力に $Q$ 行で出力せよ． $j$ 行目$(1 \leq j \leq Q)$ には， $j$ 年目の満足度調査で不満を抱く住民がいる都市の数を出力せよ．

制限

すべての入力データは以下の条件を満たす．

$2 \leq N \leq 100 000$

$1 \leq Q \leq M \leq 200 000$

$1 \leq U_i \leq N$ $(1 \leq i \leq M)$

$1 \leq V_i \leq N$ $(1 \leq i \leq M)$

$U_i \ne V_i$ $(1 \leq i \leq M)$

$1 \leq R_j \leq M$ $(1 \leq j \leq Q)$

$R_j \ne R_k$ $(1 \leq j < k \leq Q)$

どの2 つの都市についても，それらを直接結ぶ路線は 1 個以下である．

どの都市についても，その都市から都市 1 までいくつかの路線を使って移動することができる．

入出力例

入力例1

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

出力例1

0
2
2
4
4

この入力例では，計画開始前，及びそれぞれの満足度調査の時点でのそれぞれの都市から都市 $1$ への運賃は，以下の表のようになる．

時点	都市2	都市3	都市4	都市5

計画開始前	1	1	2	2

1 年目	1	1	2	2

2 年目	1	2	2	3

3 年目	1	2	2	3

4 年目	2	2	3	3

5 年目	2	2	4	3

例えば，3 年目の満足度調査では，都市 $3$ と都市 $5$ の住民が不満を抱くので，出力の 3 行目には 2 を出力する．

入力例2

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

出力例2

1
1
2
2
3
3

入力例3

2 1 1
1 2
1

出力例3

1

第15回 日本情報オリンピック本選 課題 2016 年 2 月 14 日
縄張り(Territory)

あなたは南北方向にとても長く伸びたたくさんの道路と，東西方向にとても長く伸びたたくさんの道路が交わった形をした街に住んでいる．隣り合う2 つの南北方向の道路の間隔は 1 km である．また，隣り合う 2 つの東西方向の道路の間隔も 1 km である．

この街には市役所が 1 つある．市役所のある交差点を $(0,0)$ と表す．この街の交差点は 2 つの整数 $i, j$ を用いて交差点 $(i, j)$ と表される．すなわち，交差点 $(i, j)$ とは，交差点 $(0,0)$ から東に $i$ km ($i < 0$ のときは西に $-i$ km)，北に $j$ km ( $j < 0$ のときは南に $-j$ km) 進んだ位置の交差点を表す．

市役所ではジョイ君という名の 1 匹の犬を飼っている．ジョイ君は $K$ 日間の散歩の計画を立てた．散歩の計画は以下の通りである．

$K$ 日のうち最初の日の朝にはジョイ君は交差点 $(0,0)$ にいる．ジョイ君は交差点 $(0,0)$ に印を付ける．$(0,0)$ 以外にはジョイ君が印を付けた交差点はない．

$K$ 日のそれぞれの日の昼に散歩を行う．1 日の散歩は $N$ 回のステップからなる．各ステップでは交差点から隣の交差点へと移動し，移動先に印を付ける．ジョイ君がそれぞれの日の昼にどう移動するかは日によらず一定である．

昼の移動が終わった後は，現在いる交差点で次の日の朝まで寝る．

市役所では $K$ 日間の散歩によってできるジョイ君の縄張りについて話題になっている．4 つの交差点 $(a,b),(a + 1,b),(a + 1,b + 1),(a,b + 1)$ のいずれにもジョイ君が 1 回以上印を付けているとき，4 つの交差点で囲まれた区画はジョイ君の縄張りに属する．

あなたは，ジョイ君の散歩計画から，ジョイ君の縄張りに属する区画の個数を計算するプログラムを作成することとなった．

この街の道路はとても長く，また，南北方向にも東西方向にも十分たくさんの道路があるため，散歩の途中でジョイ君が道路の端や街の端に到達することはない．

課題

ジョイ君の散歩計画が与えられると，ジョイ君の縄張りに属する区画の個数を求めるプログラムを作成せよ．

入力

標準入力から以下の入力を読み込め．

1 行目には 2 個の整数 $N, K$ が空白を区切りとして書かれている．これはそれぞれの日の散歩が $N$ 回のステップからなり，散歩計画が $K$ 日間に渡ることを表している．

2 行目には長さ $N$ の文字列 $S$ が書かれている．文字列 $S$ のうち左から $p$ 文字目 $(1 \leq p \leq N)$ の文字 $C_p$ は E，N，W，S のいずれかである．これらの文字は以下のことを表す．

文字 $C_p$ が E であるならば，$p$ 番目のステップで東隣の交差点に移動することを表す．

文字 $C_p$ が N であるならば，$p$ 番目のステップで北隣の交差点に移動することを表す．

文字 $C_p$ が W であるならば，$p$ 番目のステップで西隣の交差点に移動することを表す．

文字 $C_p$ が S であるならば，$p$ 番目のステップで南隣の交差点に移動することを表す．

ここで，交差点$(i, j)$ に対して東隣，北隣，西隣，南隣の交差点はそれぞれ，交差点 $(i + 1, j)$，交差点$(i, j + 1)$，交差点$(i - 1, j)$，交差点$(i, j - 1)$ である．

出力

標準出力に，ジョイ君の縄張りに属する区画の個数を 1 行で出力せよ．

制限

すべての入力データは以下の条件を満たす．

$1 \leq N \leq 100 000$

$1 \leq K \leq 1 000 000 000$

入出力例

入力例1

12 1
EENWSEEESWWS

出力例1

3

この入力例では，散歩は 1 日間で行われる．1 日目にジョイ君は市役所から出発して下図のように移動する．黒丸はジョイ君が印を付けた交差点，白丸はジョイ君が印を付けていない交差点，二重丸は市役所のある交差点，数字は各ステップを表す．

ジョイ君の移動経路

入力例 1 において，下図の斜線部分で示された 3 個の区画がジョイ君の縄張りに属する．

入力例1 におけるジョイ君の縄張り

入力例2

12 2
EENWSEEESWWS

出力例2

7

入力例 2 では，散歩が 2 日間に渡り行われる．それぞれの日の移動経路は入力例 1 と同一である．散歩が完了したとき，下図の斜線部分で示された 7 個の区画がジョイ君の縄張りに属する．

入力例2 におけるジョイ君の縄張り

入力例3

7 1
ENNWNNE

出力例3

0

入力例 3 では，ジョイ君の縄張りに属する区画は存在しない．

入力例4

16 5
WSESSSWWWEEENNNW

出力例4

21

第15回 日本情報オリンピック本選 課題 2016 年 2 月 14 日
断層(Geologic Fault)

遠い昔，IOI 文明という高度な文明が栄えていた．しかし，火山の噴火により，この高度な文明はついに滅んでしまった．IOI 文明は直線状の河川に沿って繁栄しており，IOI 文明が滅んだとき，その地表面は平らであった．IOI 文明の跡地は座標平面のx 軸と見なすことができる．y 軸は高さ方向を表す．すなわち，座標平面において，直線 $y = 0$ は地表を，領域 $y > 0$ は地上を，領域 $y < 0$ は地下を表す．また，IOI 文明が滅んだとき，$a$ 年前$(a \geq 0)$ の地層は，直線 $y = -a$ の位置にあった．

IOI 文明が滅んだ後，IOI 文明の跡地では $Q$ 回の地殻変動が起きた．$i$ 回目$(1 \leq i \leq Q)$ の地殻変動は，位置 $X_i$，方向 $D_i$，変動の量 $L_i$ で表される．$D_i$ は 1 または 2 である．$i$ 回目の地殻変動は以下のように起きる．

地層の移動が次のように起きる．

$D_i = 1$ のとき，断層が点$(X_i, 0)$ を通る傾き $1$ の直線に沿って造られ，この直線より上の領域にある地層が，直線に沿って高さ $L_i$ だけ移動する．すなわち，この直線より上の点 $(x, y)$ は，点$(x + L_i, y + L_i)$ に移動する．

$D_i = 2$ のとき，断層が点$(X_i, 0)$ を通る傾き $-1$ の直線に沿って造られ，この直線より上の領域にある地層が，直線に沿って高さ $L_i$ だけ移動する．すなわち，この直線より上の点$(x, y)$ は，点$(x - L_i, y + L_i)$ に移動する．

そのすぐ後に，領域 $y > 0$ の地層が風化によってすべて消える．

時は変わり現代，考古学者のJOI 博士はIOI 文明の遺跡を発掘することにした．JOI 博士はどの位置の地表の地層が，IOI 文明が滅ぶ何年前の地層であるかを知りたい．どのような地殻変動が起きたかは分かっている．あなたの仕事は，JOI 博士にかわって，$1 \leq i \leq N$ を満たす各整数 $i$ について，点$(i-1, 0)$ と点$(i, 0)$の間の地表の地層がIOI 文明が滅ぶ何年前の地層であるかを求めることである．

課題

IOI 文明の跡地に起きたの情報が与えられたとき，すべての整数 $i$ $(1 \leq i \leq N)$ に対し，点$(i - 1, 0)$ と点$(i, 0)$ の間の地表の地層がIOI 文明が滅ぶ何年前の地層であるかを出力せよ．

入力

標準入力から以下の入力を読み込め．

1 行目には， 2 個の整数 $N, Q$ が空白を区切りとして書かれている．これは，答えを求める地点の数が $N$，地殻変動の回数が $Q$ であることを表す．

続く $Q$ 行のうちの $i$ 行目$(1 \leq i \leq Q)$ には，3 個の整数 $X_i, D_i, L_i$ が空白を区切りとして書かれている．これは，$i$ 回目の地殻変動の位置が $X_i$，方向が $D_i$，変動の量が $L_i$ であることを表す．

出力

出力は $N$ 行からなる．標準出力の $i$ 行目$(1 \leq i \leq N)$ には，点$(i - 1, 0)$ と点$(i, 0)$ の間の地表の地層がIOI文明が滅ぶ何年前の地層であるかを表す整数を出力せよ．

制限

すべての入力データは以下の条件を満たす．

$1 \leq N \leq 200 000$

$1 \leq Q \leq 200 000$

$ -1 000 000 000 \leq X_i \leq 1 000 000 000$ $(1 \leq i \leq Q)$

$1 \leq D_i \leq 2$ $(1 \leq i \leq Q)$

$1 \leq L_i \leq 1 000 000 000$ $(1 \leq i \leq Q)$

入出力例

入力例1

10 2
12 1 3
2 2 2

出力例1

3
3
5
5
5
5
5
5
2
2

この入力例は，以下の図に対応する．

入力例2

10 6
14 1 1
17 1 1
-6 2 1
3 2 1
4 1 1
0 2 1

出力例2

5
5
4
5
5
5
5
5
4
4

入力例3

15 10
28 1 7
-24 2 1
1 1 1
8 1 1
6 2 1
20 1 3
12 2 2
-10 1 3
7 2 1
5 1 2

出力例3

15
14
14
14
14
12
12
12
12
12
12
12
15
15
12

第15回 日本情報オリンピック本選 課題 2016 年 2 月 14 日
電子レンジ (Microwave)

問題

JOI 君は食事の準備のため，A ℃の肉を電子レンジで B ℃まで温めようとしている．
肉は温度が 0 ℃未満のとき凍っている．
また，温度が 0 ℃より高いとき凍っていない．
温度がちょうど 0 ℃のときの肉の状態は，凍っている場合と，凍っていない場合の両方があり得る．

JOI 君は，肉の加熱にかかる時間は以下のようになると仮定して，肉を温めるのにかかる時間を見積もることにした．

肉が凍っていて，その温度が 0 ℃より小さいとき： C 秒で 1 ℃温まる．
肉が凍っていて，その温度がちょうど 0 ℃のとき： D 秒で肉が解凍され，凍っていない状態になる．
肉が凍っていないとき： E 秒で 1 ℃温まる．

この見積もりにおいて，肉を B ℃にするのに何秒かかるかを求めよ．

入力

入力は 5 行からなり，1 行に 1 個ずつ整数が書かれている．

1 行目には，もともとの肉の温度 A が書かれている．

2 行目には，目的の温度 B が書かれている．

3 行目には，凍った肉を 1 ℃温めるのにかかる時間 C が書かれている．

4 行目には，凍った肉を解凍するのにかかる時間 D が書かれている．

5 行目には，凍っていない肉を 1 ℃温めるのにかかる時間 E が書かれている．

もともとの温度 A は -100 以上 100 以下，目的の温度 B は 1 以上 100 以下であり，A ≠ 0 および A < B を満たす．

温めるのにかかる時間 C, D, E はすべて 1 以上 100 以下である．

出力

肉を B ℃にするのにかかる秒数を 1 行で出力せよ．

入出力例

入力例 1

-10
20
5
10
3

出力例 1

120

入力例 2

35
92
31
50
11

出力例 2

627

入出力例 1 では，もともとの肉は -10 ℃で凍っている．かかる時間は以下のようになる．

-10 ℃から 0 ℃まで温めるのに 5 × 10 = 50 秒．
0 ℃の肉を解凍するのに 10 秒．
0 ℃から 20 ℃まで温めるのに 3 × 20 = 60 秒．

したがって，かかる時間の合計は 120 秒である．

入出力例 2 では，もともとの肉は凍っていない．したがって，肉を 35 ℃から 92 ℃まで温めるのにかかる時間は 627 秒である．

情報オリンピック日本委員会作 『第 16 回日本情報オリンピック JOI 2016/2017 予選競技課題』
ポイントカード (Point Card)

問題

JOI 商店街ではポイントカードのサービスを行っている．各ポイントカードには 2N 個のマスがある．商品を購入すると，くじを引くことができ，結果によって「当たり」か「はずれ」の印がマスに押される．同じマスに印が 2 回押されることはない．2N 個のマスのうち N 個以上のマスに当たりの印が書かれたポイントカードは，景品と交換することができる．
また，ポイントカードの印は，1 マスにつき 1 円で書き換えてもらうことができる．

JOI 君は 2N 個のマスが全て埋まっているポイントカードを M 枚持っている．ポイントカード i (1 ≦ i ≦ M) には，Ai 個の当たり印と，Bi 個のはずれ印が押されている．JOI 君は M - 1 個以上の景品が欲しい．

JOI 君が M - 1 個以上の景品を得るために必要な費用の最小値を求めよ．

入力

入力は M + 1 行からなる．

1 行目には，2 個の整数 N, M (1 ≦ N ≦ 1000, 1 ≦ M ≦ 1000) が空白を区切りとして書かれている．これは，ポイントカードには 2N 個のマスがあり，JOI 君が M 枚のポイントカードを持っていることを表す．

続く M 行のうちの i 行目 (1 ≦ i ≦ M) には，それぞれ 2 個の整数 Ai, Bi (0 ≦ Ai ≦ 2N, 0 ≦ Bi ≦ 2N, Ai + Bi = 2N) が書かれており，ポイントカード i には Ai 個の当たり印と Bi 個のはずれ印が押されていることを表す．

出力

JOI 君が M - 1 個以上の景品を得るために必要な費用の最小値を 1 行で出力せよ．

入出力例

入力例 1

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

出力例 1

4

入力例 2

5 4
5 5
8 2
3 7
8 2

出力例 2

0

入力例 1 においては，ポイントカード 1 のはずれ印を 3 つ当たり印に書き換えてもらい，ポイントカード 3 のはずれ印を 1 つ当たり印に書き換えてもらうと，4 円で 4 (= 5 - 1) 枚のカードが景品と交換可能になり，これが最小の費用である．

入力例 2 においては，既に 3 (= 4 - 1) 枚のカードが景品と交換可能なので，書き換えてもらう必要ない．

情報オリンピック日本委員会作 『第 16 回日本情報オリンピック JOI 2016/2017 予選競技課題』
休憩スペース (Refreshment Area)

問題

世界的なプログラミングコンテストが日本で開催されることになり，現在会場の設営が行われている．この会場は南北方向に N マス，東西方向に M マスのマス目状に区切られており，いくつかのマスには競技用の機材が置かれている．

このコンテストでは，選手が競技中に休憩するために，軽食や飲み物などを置いた休憩スペースを 1 箇所会場内に設けることになった．休憩スペースは南北方向または東西方向に連続した D マスでなければならない．ただし，機材の置かれたマス目に休憩スペースを設けることはできない．

会場内に休憩スペースを設ける方法は何通りあるかを求めるプログラムを作成せよ．

入力

入力は 1 + N 行からなる．

1 行目には 3 個の整数 N, M, D (1 ≦ N ≦ 100, 1 ≦ M ≦ 100, 2 ≦ D ≦ 100) が空白を区切りとして書かれており，会場が南北方向に N マス，東西方向に M マスのマス目状に区切られており，休憩スペースが南北方向または東西方向に連続した D マスからなることを表す．

続く N 行にはそれぞれ M 文字からなる文字列が書かれており，会場の情報を表す．
N 行のうちの i 行目の j 文字目 (1 ≦ i ≦ N, 1 ≦ j ≦ M) は，会場のマス目の北から i 行目，西から j 列目のマスの状態を表す '#' または '.' のいずれかの文字である．'#' はそのマスに機材が置かれていることを，'.' はそのマスに機材が置かれていないことを表す．

出力

会場内に休憩スペースを設ける方法は何通りあるかを 1 行で出力せよ．

入出力例

入力例 1

3 5 2
...#.
#...#
....#

出力例 1

12

入力例 2

4 7 5
.#.....
.....##
.......
#......

出力例 2

7

入出力例 1 では，下の図に示すように，休憩スペースを設ける方法は全部で 12 通りある．

情報オリンピック日本委員会作 『第 16 回日本情報オリンピック JOI 2016/2017 予選競技課題』
ぬいぐるみの整理 (Plush Toys)

問題

ある JOI 関係者は，おもちゃ屋で働いている．今日は，店内にあるぬいぐるみコーナーの整理をすることになった．

ぬいぐるみコーナーの棚には，N 個のぬいぐるみが左から右に一列に並べられている．棚は仕切りにより N 個の区画に区切られており，1 つの区画に 1 個のぬいぐるみを置く．このおもちゃ屋は合計 M 種類のぬいぐるみを売っており，それぞれ 1 から M までの番号が付けられている．棚に並べられた N 個のぬいぐるみは，それぞれこの M 種類のうちのいずれかである．また，それぞれの種類のぬいぐるみは，少なくとも 1 個は存在する．

見栄えを良くするため，同じ種類のぬいぐるみが全て連続して棚に置かれるように，ぬいぐるみを並べ替えたい．次のような方法で，ぬいぐるみを並べ替えることにした．

N 個のぬいぐるみのうちいくつかを選び，棚から取り出す．取り出さなかったぬいぐるみの位置は動かさない．

取り出したぬいぐるみを，好きな順に棚の空いている区画に戻していく．

並べ替えた後，同じ種類のぬいぐるみが全て連続して棚に置かれていなければならない．
並べ替えるために取り出すぬいぐるみの個数の最小値を求めるプログラムを作成せよ．

入力

入力は 1 + N 行からなる．

1 行目には 2 個の整数 N, M (1 ≦ N ≦ 100000, 1 ≦ M ≦ 20) が空白を区切りとして書かれており，ぬいぐるみが N 個あり，種類が M 種類あることを表す．

続く N 行のそれぞれには，1 以上 M 以下の整数が書かれている． N 行のうちの i 行目 (1 ≦ i ≦ N) に書かれた整数は，棚の左から i 番目の区画に置かれたぬいぐるみの種類を表す．各種類について，少なくとも 1 個のぬいぐるみが存在していることが保証される．

出力

並べ替えるために取り出すぬいぐるみの個数の最小値を 1 行で出力せよ．

入出力例

入力例 1

7 2
1
2
2
2
1
2
1

出力例 1

2

入力例 2

12 4
1
3
2
4
2
1
2
3
1
1
3
4

出力例 2

7

入力例 1 においては，最初に置かれているぬいぐるみの種類は左から順に 1， 2， 2， 2， 1， 2， 1 である．並べ替えるために取り出すぬいぐるみの個数を最小にするには，左から 1 番目と 6 番目のぬいぐるみを取り出し，左から 1 番目に種類 2 のぬいぐるみを，左から 6 番目に種類 1 のぬいぐるみを配置すればよい．このとき，取り出すぬいぐるみの個数は 2 個である．

情報オリンピック日本委員会作 『第 16 回日本情報オリンピック JOI 2016/2017 予選競技課題』
尾根 (Ridge)

問題

JOI カルデラは景観の良さが多くの登山家に愛される美しい地形である．
特に，尾根と呼ばれる場所からの景観は絶景である．

JOI カルデラの土地は南北 H キロメートル，東西 W キロメートルの長方形である．
南北，東西に 1 キロメートルごとに JOI カルデラの土地を分け，これら H×W 個の領域を区域と呼ぶ．
すべての区域において，その中では標高は等しい．また，異なる区域の標高は異なる．

ある区域に雨が降ると，雨水はその区域に東西南北に隣り合う最大で 4 つの区域のうち，
標高がその区域より低いような区域のすべてに流れる．そのような区域がない場合，雨水はその区域に溜まる．
他の区域から流れてきた雨水についても同様である．
JOI カルデラの外側は，外輪山の急峻な崖に囲まれているため，雨水が JOI カルデラの外に流れ出すことはない．

ある区域について，その区域のみに雨が降った場合，最終的に複数の区域に雨水が溜まるとき，その区域を尾根と呼ぶ．
絶景をこよなく愛する登山家たちのために，尾根の区域がいくつあるかを求めるプログラムを作成せよ．

入力

入力は 1 + H 行からなる．

1 行目には 2 個の整数 H, W (1 ≦ H ≦ 1000, 1 ≦ W ≦ 1000) が空白を区切りとして書かれており，JOI カルデラが南北に H キロメートル，東西に W キロメートルにわたることを表す．

続く H 行にはそれぞれ W 個の整数が空白を区切りとして書かれており，標高の情報を表す．
H 行のうちの i 行目の j 番目 (1 ≦ i ≦ H, 1 ≦ j ≦ W) の整数 Mi,j (1 ≦ Mi,j ≦ H×W) は，JOI カルデラの北から i 行目，西から j 列目の区域の標高を表す．
(i,j) ≠ (k,l) なら，Mi,j ≠ Mk,l を満たす．

出力

尾根の区域の個数を 1 行で出力せよ．

入出力例

入力例 1

3 3
2 9 4
7 5 3
6 1 8

出力例 1

4

入力例 2

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

出力例 2

4

入力例 1 において，標高が 5, 7, 8, 9 の 4 個の区域が尾根である．例えば，標高 9 の区域に雨が降った場合，最終的に雨水は標高 1, 2, 3 の 3 個の区域に溜まる．したがって，標高 9 の区域は尾根である．また，標高 6 の区域に雨が降った場合，最終的に雨水は標高 1 の区域にしか溜まらない．したがって，標高 6 の区域は尾根ではない．

入力例 2 において，標高が 8, 10, 11, 12 の 4 個の区域が尾根である．

情報オリンピック日本委員会作 『第 16 回日本情報オリンピック JOI 2016/2017 予選競技課題』
ヘビの JOI 君 (Snake JOI)

問題

ヘビの JOI 君は，ある大きな屋敷に迷い込んでしまった．屋敷の住人に見つかる前に，屋敷を脱出しなければならない．

この屋敷には部屋が N 個あり，1, 2, ..., N の番号が付けられている．また，廊下が M 本あり，i 本目の廊下 (1 ≦ i ≦ M) は部屋 Ai と部屋 Bi を結んでいる．JOI 君はこれらの廊下をどちらの向きにも通ることができ，廊下 i を通るのには Di 分かかる．部屋と部屋の間を廊下を通る以外の手段で移動する方法はない．

この屋敷の部屋の温度はそれぞれ一定に調節されており，JOI 君にとって寒すぎるか，快適であるか，暑すぎるかである．JOI 君は，急な温度変化に対応できないため，最後に寒すぎる部屋を出てから X 分未満のうちに暑すぎる部屋に入ることはできない．同様に，最後に暑すぎる部屋を出てから X 分未満のうちに寒すぎる部屋に入ることもできない．

JOI 君は，移動中に部屋に入るとすぐに部屋から出なければならない．また，廊下の途中で引き返したり，廊下 i を Di 分より長い時間かけて通ることもできない．ただし，一度訪れた部屋にもう一度入ることや，一度使った廊下をもう一度使うことは許される．

JOI 君は現在部屋 1 にいる．この部屋は JOI 君にとって寒すぎる．JOI 君は屋敷の出口のある部屋 N に入ると，屋敷から脱出できる．

JOI 君が屋敷から脱出するのにかかる最短の時間を求めよ．

入力

入力は 1 + N + M 行からなる．

1 行目には，3 個の整数 N, M, X (2 ≦ N ≦ 10000, 1 ≦ M ≦ 20000, 1 ≦ X ≦ 200) が空白を区切りとして書かれている．これは，屋敷に N 個の部屋と M 本の廊下があり，JOI 君が温度変化に対応するのに X 分かかることを表す．

続く N 行のうちの i 行目 (1 ≦ i ≦ N) には，部屋 i の温度を表す整数 Ti (0 ≦ Ti ≦ 2) が書かれている．JOI 君にとって部屋 i は，Ti = 0 のとき寒すぎ，Ti = 1 のとき快適であり，Ti = 2 のとき暑すぎる．T1 = 0 であることが保証されている．

続く M 行のうちの j 行目 (1 ≦ j ≦ M) には，3 個の整数 Aj, Bj, Dj (1 ≦ Aj < Bj ≦ N, 1 ≦ Dj ≦ 200) が空白を区切りとして書かれている．これは，廊下 j が部屋 Aj と部屋 Bj を結んでおり，通るのに Dj 分かかることを表す．同じ部屋の組を結ぶ廊下が複数ある可能性があることに注意せよ．

与えられる入力データでは，JOI 君が屋敷から脱出できることは保証されている．

出力

JOI 君が屋敷から脱出するのに最短で何分かかるかを表す整数を 1 行で出力せよ．

入出力例

入力例 1

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

出力例 1

9

入力例 2

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

出力例 2

6

入力例 1 では，部屋を 1 → 2 → 3 → 4 → 5 → 6 → 5 → 8 の順に移動するのが最短となる．

入力例 2 では，いくつかの部屋の組 (たとえば部屋 1 と部屋 5) を結ぶ廊下が複数ある．

情報オリンピック日本委員会作 『第 16 回日本情報オリンピック JOI 2016/2017 予選競技課題』
ストーブ(Stove)

JOI 君の部屋にはストーブがある．JOI 君自身は寒さに強いのでひとりで部屋にいるときはストーブをつける必要はないが，来客があるときはストーブをつける必要がある．

この日，JOI 君のもとにはN 人の来客がある．i 番目(1 \leq i \leq N) の来客は時刻T_i に到着し，時刻T_i + 1に退出する．同時に複数人の来客があることはない．

JOI 君は任意の時刻にストーブをつけたり消したりできる．ただし，ストーブをつける度にマッチを1本消費する．JOI 君はマッチをK 本しか持っていないので，K 回までしかストーブをつけることができない．一日のはじめにストーブは消えている．

ストーブをつけているとその分だけ燃料を消費するので，ストーブをつけたり消したりする時刻をうまく定めて，ストーブがついている時間の合計を最小化したい．

課題

JOI 君の部屋への来客の情報と，JOI 君の持っているマッチの本数が与えられたとき，ストーブがついている時間の合計の最小値を求めよ．

入力

標準入力から以下の入力を読み込め．

1 行目には，2 つの整数N, K が空白を区切りとして書かれている．これは，JOI 君の部屋にN 人の来客があり，JOI 君はK 本のマッチを持っていることを表す．

続くN 行のうちのi 行目(1 \leq i \leq N) には，整数T_i が書かれている．これは，i 番目の来客が時刻T_iに到着し，時刻T_i + 1 に退出することを表す．

出力

標準出力に，ストーブがついている時間の合計の最小値を1 行で出力せよ．

制限

すべての入力データは以下の条件を満たす．

1 \leq N \leq 100 000．

1 \leq K \leq N．

1 \leq T_i \leq 1 000 000 000 (1 \leq i \leq N)．

T_i < T_{i+1} (1 \leq i \leq N - 1)．

問入出力例

入力例1

3 2
1
3
6

出力例1

4

この入力例では，JOI 君の部屋への来客が3 人ある．以下のようにストーブをつけたり消したりすると，来客がある間はストーブがついており，ストーブをつける回数は2 回であり，ストーブがついている時間の合計は(4 - 1) + (7 - 6) = 4 である．

1 番目の来客が到着する時刻1 にストーブをつける．

2 番目の来客が退出する時刻4 にストーブを消す．

3 番目の来客が到着する時刻6 にストーブをつける．

3 番目の来客が退出する時刻7 にストーブを消す．

ストーブをつけている時間の合計を4 未満にすることはできないので，答えとして4 を出力する．

入力例2

3 1
1
2
6

出力例2

6

この入力例では，JOI 君は1 回しかストーブをつけることができないので，1 番目の来客が到着する時刻1 にストーブをつけ，3 番目の来客が退出する時刻7 にストーブを消せばよい．

来客が退出する時刻と，その次の来客が到着する時刻が一致する場合があることに注意せよ．

入力例3

3 3
1
3
6

出力例3

3

この入力例では，JOI 君は来客が到着する度にストーブをつけ，来客が退出する度にストーブを消せばよい．

入力例4

10 5
1
2
5
6
8
11
13
15
16
20

出力例4

12

情報オリンピック日本委員会作 『第17 回日本情報オリンピック(JOI 2017/2018) 本選』
美術展(Art Exhibition)

JOI 国で美術展が行われることになった．美術展では，国中から集まった様々な美術品が展示される予定である．

展示される美術品の候補として，N 点の美術品が集まった．これらの美術品には1, 2, ..., N の番号が付けられている．それぞれの美術品には大きさと価値と呼ばれる値が定まっている．美術品i (1 \leq i \leq N) の大きさはA_i，価値はB_i である．

美術展では，これらの美術品のうちから1 点以上を選んで展示する．美術展の会場は十分に広く，N 点の美術品すべてを展示することも可能である．しかし，JOI 国の人々の美的感覚のため，美術品の間で大きさの差があまり大きくならないように展示する美術品を選びたい．一方，できるだけ価値の大きい美術品を多く展示したい．そのため，次の条件を満たすように展示する美術品を選ぶことにした：

選んだ美術品の中で，大きさが最大のものの大きさをA_{max}，最小のものの大きさをA_{min} とする．また，選んだ美術品の価値の総和をS とする．

このとき，S - (A_{max} - A_{min}) を最大化する．

課題

展示される美術品の候補の個数と，それぞれの美術品の大きさと価値が与えられたとき，S - (A_{max} - A_{min})の最大値を求めよ．

入力

標準入力から以下の入力を読み込め．

1 行目には，整数N が書かれている．これは，展示される美術品の候補の個数を表す．

続くN 行のうちのi 行目(1 \leq i \leq N) には，2 個の整数A_i, B_i が空白を区切りとして書かれている．これらは，美術品i の大きさがA_i，価値がB_i であることを表す．

出力

標準出力に，S - (A_{max} - A_{min}) の最大値を1 行で出力せよ．

制限

すべての入力データは以下の条件を満たす．

2 \leq N \leq 500 000．

1 \leq A_i \leq 1 000 000 000 000 000 = 10^{15} (1 \leq i \leq N)．

1 \leq B_i \leq 1 000 000 000 (1 \leq i \leq N)．

入出力例

入力例1

3
2 3
11 2
4 5

出力例1

6

この入力例では，展示される美術品の候補が3 点ある．それぞれの美術品の大きさ，価値は次の通りである．

美術品1 の大きさは2，価値は3 である．

美術品2 の大きさは11，価値は2 である．

美術品3 の大きさは4，価値は5 である．

この場合，美術品1 と美術品3 を展示するために選ぶと，次のようにしてS - (A_{max} - A_{min}) = 6 となる．

選んだ中で大きさが最大の美術品は，美術品3 である．よって，A_{max} = 4 である．

選んだ中で大きさが最小の美術品は，美術品1 である．よって，A_{min} = 2 である．

選んだ美術品の価値の総和は3 + 5 = 8 であるから，S = 8 である．

S - (A_{max} - A_{min}) を7 以上にすることは不可能なので，6 を出力する．

入力例2

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

出力例2

7

入力例3

15
1543361732 260774320
2089759661 257198921
1555665663 389548466
4133306295 296394520
2596448427 301103944
1701413087 274491541
2347488426 912791996
2133012079 444074242
2659886224 656957044
1345396764 259870638
2671164286 233246973
2791812672 585862344
2996614635 91065315
971304780 488995617
1523452673 988137562

出力例3

4232545716

情報オリンピック日本委員会作 『第17 回日本情報オリンピック(JOI 2017/2018) 本選』
団子職人(Dango Maker)

あなたは団子を作る職人である．今，あなたは団子に串を刺そうとしているところである．

団子は，縦N 行，横M 列に仕切られたマスの中に配置されている．各マスには団子が1 個ずつ入っている．それぞれの団子には，赤(R)，緑(G)， 白(W) のいずれかの色が付いている．あなたは，左から右の方向，または，上から下の方向に連続する3 マスから団子を取り出し，この順に1 本の串にちょうど3個刺すことができる．

今あなたは，赤，緑，白の団子が1 個ずつこの順に刺さった串を可能な限り多く作りたい．串に刺す順番は，マスから取り出した順番と同じでなければならない．また，同じ団子に2 本以上の串を刺すことはできない．

あなたは，団子が刺さった串を最大何本作ることができるだろうか．

課題

マスの中に配置された団子の色の情報が与えられたとき，赤，緑，白の団子が1 個ずつこの順に刺さった串が最大何本作れるかを求めるプログラムを作成せよ．

入力

標準入力から以下の入力を読み込め．

1 行目には，整数N とM が空白を区切りとして書かれている．

続くN 行のうちのi 行目(1 \leq i \leq N) には，R, G, W からなる長さM の文字列が書かれている．この文字列のj 文字目(1 \leq j \leq M) は，上からi 行目，左からj 列目のマスの団子の色を表す．

出力

標準出力に，団子が刺さった串の本数の最大値を1 行で出力せよ．

制限

すべての入力データは以下の条件を満たす．

1 \leq N \leq 3 000．

1 \leq M \leq 3 000．

入出力例

入力例1

3 4
RGWR
GRGG
RGWW

出力例1

3

次のように串に刺すことで，団子が刺さった串を3 本作ることができる．

上から1 行目，左から1 列目の団子から右方向に3 個の団子を取り出し，この順に串に刺す．

上から1 行目，左から4 列目の団子から下方向に3 個の団子を取り出し，この順に串に刺す．

上から3 行目，左から1 列目の団子から右方向に3 個の団子を取り出し，この順に串に刺す．

4 本以上の串を作ることはできないので，3 を出力する．

入力例2

4 4
RGWR
GRRG
WGGW
WWWR

出力例2

4

次のように串に刺すことで，団子が刺さった串を4 本作ることができる．

上から1 行目，左から1 列目の団子から右方向に3 個の団子を取り出し，この順に串に刺す．

上から1 行目，左から4 列目の団子から下方向に3 個の団子を取り出し，この順に串に刺す．

上から2 行目，左から2 列目の団子から下方向に3 個の団子を取り出し，この順に串に刺す．

上から2 行目，左から3 列目の団子から下方向に3 個の団子を取り出し，この順に串に刺す．

5 本以上の串を作ることはできないので，4 を出力する．

入力例3

5 5
RGRGW
GRRGW
WGGWR
RWRGW
RGWGW

出力例3

6

情報オリンピック日本委員会作 『第17 回日本情報オリンピック(JOI 2017/2018) 本選』
定期券(Commuter Pass)

JOI 君が住む都市にはN 個の駅があり，それぞれ1, 2, ..., N の番号が付けられている．また，M 本の鉄道路線があり，それぞれ1, 2, ..., M の番号が付けられている．鉄道路線i (1 \leq i \leq M) は駅A_i と駅B_i を双方向に結んでおり，乗車運賃はC_i 円である．

JOI 君は駅S の近くに住んでおり，駅T の近くのIOI 高校に通っている．そのため，両者を結ぶ定期券を購入することにした．定期券を購入する際には，駅S と駅T の間を最小の運賃で移動する経路を一つ指定しなければならない．この定期券を用いると，指定した経路に含まれる鉄道路線は双方向に自由に乗り降りできる．

JOI 君は，駅U および駅V の近くにある書店もよく利用している．そこで，駅U から駅V への移動にかかる運賃ができるだけ小さくなるように定期券を購入したいと考えた．

駅U から駅V への移動の際は，まず駅U から駅V への経路を1 つ選ぶ．この経路に含まれる鉄道路線i において支払うべき運賃は，

鉄道路線i が定期券を購入する際に指定した経路に含まれる場合，0 円

鉄道路線i が定期券を購入する際に指定した経路に含まれない場合，C_i 円

となる．この運賃の合計が，駅U から駅V への移動にかかる運賃である．

定期券を購入する際に指定する経路をうまく選んだときの，駅U から駅V への移動にかかる運賃の最小値を求めたい．

課題

定期券を購入する際に指定する経路をうまく選んだときの，駅U から駅V への移動にかかる運賃の最小値を求めるプログラムを作成せよ．

入力

標準入力から以下の入力を読み込め．

1 行目には，2 個の整数N, M が書かれている．これらは，JOI 君が住む都市にN 個の駅とM 本の鉄道路線があることを表す．

2 行目には，2 個の整数S, T が書かれている．これらは，JOI 君が駅S から駅T への定期券を購入することを表す．

3 行目には，2 個の整数U, V が書かれている．これらは，JOI 君が駅U から駅V への移動にかかる運賃を最小化したいことを表す．

続くM 行のうちのi 行目(1 \leq i \leq M) には，3 個の整数A_i, B_i,C_i が書かれている．これらは，鉄道路線i が駅A_i と駅B_i を双方向に結び，その運賃がC_i 円であることを表す．

出力

標準出力に，定期券を購入する際に駅S から駅T への経路をうまく指定したときの，駅U から駅V への移動にかかる運賃の最小値を1 行で出力せよ．

制限

すべての入力データは以下の条件を満たす．

2 \leq N \leq 100 000．

1 \leq M \leq 200 000．

1 \leq S \leq N．

1 \leq T \leq N．

1 \leq U \leq N．

1 \leq V \leq N．

S ≠ T．

U ≠ V．

S ≠ U またはT ≠ V．

どの駅から他のどの駅へも1 本以上の鉄道路線を用いて到達できる．

1 \leq A_i < B_i \leq N (1 \leq i l\leq M)．

1 \leq i < j \leq M に対し，A_i ≠ A_j またはB_i ≠ B_j．

1 \leq C_i \leq 1 000 000 000 (1 \leq i \leq M)．

入出力例

入力例1

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

出力例1

2

この入力例では，定期券を買う際に指定できる経路は駅1 → 駅2 → 駅3 → 駅5 → 駅6 という経路に限られる．

駅1 から駅4 への移動にかかる運賃を最小化するには，駅1 → 駅2 → 駅3 → 駅5 → 駅4 という経路を選べばよい．この経路を選んだ場合，各鉄道路線において支払うべき運賃は，

駅4 と駅5 を結ぶ鉄道路線5 においては，2 円．

それ以外の鉄道路線においては，0 円．

となるので，かかる運賃の合計は2 円となる．

入力例2

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

出力例2

3000000000

この入力例では，駅3 から駅6 への移動に定期券を用いない．

入力例3

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

出力例3

15

入力例4

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

出力例4

0

入力例5

10 15
6 8
7 9
2 7 12
8 10 17
1 3 1
3 8 14
5 7 15
2 3 7
1 10 14
3 6 12
1 5 10
8 9 1
2 9 7
1 4 1
1 8 1
2 4 7
5 6 16

出力例5

19

情報オリンピック日本委員会作 『第17 回日本情報オリンピック(JOI 2017/2018) 本選』
毒蛇の脱走(Snake Escaping)

JOI 研究所では2^L 匹の毒蛇を飼っており，それぞれ0, 1, ..., 2^L - 1 の番号が付けられている．すべての毒蛇は頭から順にL 個の部分に分かれており，それぞれの部分は青または赤である．毒蛇i に対し，i を2進表記してi = $\sum_{k=1}^{L}$ c_k2^{L-k} (0 \leq c_k \leq 1) とおいたとき，

c_k = 0 であれば，毒蛇i の頭から数えてk 番目の部分は青であり，

c_k = 1 であれば，毒蛇i の頭から数えてk 番目の部分は赤である．

各毒蛇には毒性と呼ばれる0 以上9 以下の整数値が定まっている．0, 1, 2, 3, 4, 5, 6, 7, 8, 9 からなる長さ2^L の文字列S が与えられ，そのi 文字目(1 \leq i \leq 2^L) は毒蛇i - 1 の毒性を表す．

毒蛇たちの動きは素早いので，JOI 研究所からは，よく毒蛇たちが脱走してしまう．JOI 研究所には脱走した毒蛇を目撃した周辺住民から苦情が寄せられる．

あなたには，Q 日間にわたる苦情の情報が与えられる．d 日目(1 \leq d \leq Q) に寄せられた苦情は， 0, 1, ?からなる長さL の文字列T_d として表され，

T_d のj 文字目(1 \leq j \leq L) が0 の場合は，d 日目に脱走したすべての毒蛇の頭から数えてj 番目の部分が青であることを表し，

T_d のj 文字目(1 \leq j \leq L) が1 の場合は，d 日目に脱走したすべての毒蛇の頭から数えてj 番目の部分が赤であることを表し，

T_d のj 文字目(1 \leq j \leq L) が? の場合は，d 日目に脱走した毒蛇の頭から数えてj 番目の部分については，周辺住民からは情報が与えられなかったことを表す．

苦情はすべて正確な情報である．脱走した毒蛇はJOI 研究所の職員がその日のうちに捕獲する．捕獲された毒蛇が，翌日以降に再び脱走することはあり得る．

毒蛇の脱走によるリスクを見積もるために，JOI 研究所のK 理事長は脱走した可能性のある毒蛇の毒性の合計を知りたい．あなたの仕事は，Q 日間にわたる苦情の情報から，それぞれの日ごとに，その日に脱走した可能性のある毒蛇の毒性の合計を求めるプログラムを作成することである．

課題

毒蛇の毒性を表す文字列S と，Q 日間の苦情の情報が与えられるので，それぞれの日ごとに，その日に脱走した可能性のある毒蛇の毒性の合計を求めるプログラムを作成せよ．

メモリ制限が小さいことに注意すること．

入力

標準入力から以下の入力を読み込め．

1 行目には，整数L, Q が空白を区切りとして書かれている．これらは順に，毒蛇の部分の個数と，苦情の寄せられる日数を表す．

2 行目には，長さ2^L の文字列S が書かれている．この文字列は毒蛇の毒性を表す．

続くQ 行のうちのd 行目(1 \leq d \leq Q) には，長さL の文字列T_d が書かれている．この文字列はd 日目の苦情を表す．

出力

標準出力にQ 行で出力せよ．d 行目には，d 日目に脱走した可能性のある毒蛇の毒性の合計を表す整数を出力せよ．

制限

すべての入力データは以下の条件を満たす．

1 \leq L \leq 20．

1 \leq Q \leq 1 000 000．

S は長さ2^L の文字列である．

文字列S は0, 1, 2, 3, 4, 5, 6, 7, 8, 9 からなる．

T_d は長さL の文字列である(1 \leq d \leq Q)．

文字列T_d は0, 1, ? からなる(1 \leq d \leq Q)．

入出力例

入力例1

3 5
12345678
000
0??
1?0
?11
???

出力例1

1
10
12
12
36

この入力例では，L = 3 である．3 つの部分に分かれた毒蛇が，全部で2^3 = 8 匹いる．苦情は5 日間にわたって寄せられる．

1 日目に脱走した可能性のある毒蛇は，毒蛇0 のみである．毒性の合計は1 である．

2 日目に脱走した可能性のある毒蛇は，毒蛇0, 1, 2, 3 である．毒性の合計は10 である．

3 日目に脱走した可能性のある毒蛇は，毒蛇4, 6 である．毒性の合計は12 である．

4 日目に脱走した可能性のある毒蛇は，毒蛇3, 7 である．毒性の合計は12 である．

5 日目に脱走した可能性のある毒蛇は，毒蛇0, 1, 2, 3, 4, 5, 6, 7 である．毒性の合計は36 である．

入力例2

4 8
3141592653589793
0101
?01?
??1?
?0??
1?00
01?1
??10
????

出力例2

9
18
38
30
14
15
20
80

情報オリンピック日本委員会作 『第17 回日本情報オリンピック(JOI 2017/2018) 本選』
ソーシャルゲーム (Social Game)

問題文

JOI 君は明日から新たにソーシャルゲームを始めることにした．

このソーシャルゲームでは，1 日につき 1 回までログインすることができ，ログインするたびに A 枚のコインが得られる．

また，月曜日から日曜日まで 7 日連続でログインすると，そのたびに，追加で B 枚のコインが得られる．

これ以外にコインがもらえることはない．

明日は月曜日である．JOI 君が少なくとも C 枚のコインを得るためにログインしなければならない回数の最小値を求めよ．

制約

1 ≦ A ≦ 1000

0 ≦ B ≦ 1000

1 ≦ C ≦ 1000000 (= 10^6)

入力・出力

入力

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

A B C

出力

JOI 君が少なくとも C 枚のコインを得るためにログインしなければならない回数の最小値を出力せよ．

入出力例

入力例 1

3 0 10

出力例 1

4

1 回のログインあたり 3 枚のコインが得られ，10 枚のコインを集めたい．

JOI 君は，月曜日から連続 4 日間ログインすることで 12 枚のコインが得られる．

3 回以下のログインで 10 枚以上のコインを得ることはできないので，JOI 君がログインしなければならない回数の最小値は 4 である．従って，4 を出力する．

入力例 2

1 2 10

出力例 2

8

1 回のログインあたり 1 枚のコインが得られる．それとは別に，1 週間連続でログインすることで 2 枚のコインが得られる．10 枚のコインを集めたい．

月曜日から日曜日まで連続でログインすると，日々のコイン 7 枚に加えて，2 枚のコインが得られるため，合計 9 枚のコインが得られる．従って，更にもう 1 回ログインすることにより，10 枚のコインが得られる．

7 回以下のログインで 10 枚以上のコインを得ることはできないので，JOI 君がログインしなければならない回数の最小値は 8 である．従って，8 を出力する．

情報オリンピック日本委員会作 『第 18 回日本情報オリンピック JOI 2018/2019 予選競技課題』