001 - Print 5+N

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

りんごが 5 個あり、みかんが N 個あります。

整数 N が与えられるので、りんごとみかんを合わせて何個あるかを出力するプログラムを作成してください。

制約

  • 1 \leq N \leq 100
  • N は整数

入力

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

N

出力

りんごとみかんを合わせた個数を出力してください。


入力例 1

2

出力例 1

7

このテストケースでは、りんごが 5 個、みかんが 2 個あります。
合計個数は 5+2=7 個です。


入力例 2

4

出力例 2

9

このテストケースでは、りんごが 5 個、みかんが 4 個あります。
合計個数は 5+4=9 個です。


入力例 3

8

出力例 3

13

このテストケースでは、りんごが 5 個、みかんが 8 個あります。
合計個数は 5+8=13 個です。


Source Name

「アルゴリズム×数学」が基礎からしっかり身につく本 2.1.3項
002 - Sum of 3 Integers

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

3 つの整数 A_1, A_2, A_3 が与えられます。

A_1 + A_2 + A_3 を出力してください。

制約

  • 1 \leq A_1, A_2, A_3 \leq 100
  • 入力はすべて整数

入力

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

A_1 A_2 A_3

出力

答えを出力してください。


入力例 1

10 20 50

出力例 1

80

10+20+50=80 なので、80 と出力すれば正解となります。


入力例 2

1 1 1

出力例 2

3

1+1+1=3 なので、3 と出力すれば正解となります。


入力例 3

100 100 100

出力例 3

300

100+100+100=300 なので、300 と出力すれば正解となります。

003 - Sum of N Integers

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

整数 NN 個の整数 A_1, A_2, \cdots, A_N が与えられます。(入力の形式は「入力」セクションを参照)

A_1 + A_2 + \cdots + A_N を出力してください。

制約

  • 1 \leq N \leq 50
  • 1 \leq A_i \leq 100 (1 \leq i \leq N)
  • 入力はすべて整数

入力

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

N
A_1 A_2 A_3 \cdots A_N

出力

答えを出力してください。


入力例 1

5
3 1 4 1 5

出力例 1

14

3+1+4+1+5=14 なので、14 と出力すれば正解となります。


入力例 2

3
10 20 50

出力例 2

80

10+20+50=80 なので、80 と出力すれば正解となります。


入力例 3

10
1 2 3 4 5 6 7 8 9 10

出力例 3

55

1+2+3+4+5+6+7+8+9+10=55 なので、55 と出力すれば正解となります。

004 - Product of 3 Integers

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

3 つの整数 A_1, A_2, A_3 が与えられます。

A_1 A_2 A_3 を出力するプログラムを作成してください。

制約

  • 1 \leq A_1, A_2, A_3 \leq 100
  • 入力はすべて整数

入力

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

A_1 A_2 A_3

出力

答えを出力してください。


入力例 1

2 8 8

出力例 1

128

2 \times 8 \times 8 = 128 なので 128 と出力すれば正解となります。


入力例 2

7 7 25

出力例 2

1225

7 \times 7 \times 25 = 1225 なので 1225 と出力すれば正解となります。


入力例 3

100 100 100

出力例 3

1000000

100 \times 100 \times 100 = 1000000 なので 1000000 と出力すれば正解となります。

005 - Modulo 100

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 個の整数 a_1, a_2, \cdots, a_N が与えられます。

(a_1 + a_2 + \cdots + a_N) \bmod 100 の値を出力してください。

制約

  • 1 \leq N \leq 50
  • 1 \leq a_i \leq 100 (1 \leq i \leq N)
  • 入力はすべて整数

入力

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

N
a_1 a_2 a_3 \cdots a_N

出力

答えを出力してください。


入力例 1

3
30 50 70

出力例 1

50

30+50+70=150 なので、これを 100 で割った余り 50 を出力すれば正解となります。


入力例 2

10
1 2 3 4 5 6 7 8 9 10

出力例 2

55

1+2+3+4+5+6+7+8+9+10=55 なので、これを 100 で割った余り 55 を出力すれば正解となります。


入力例 3

5
60 60 60 60 60

出力例 3

0

答えが 0 になる場合もあることに注意してください。

006 - Print 2N+3

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

整数 N が与えられます。2N+3 の値を出力してください。

制約

  • 1 \leq N \leq 100
  • N は整数

入力

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

N

出力

答えを出力してください。


入力例 1

100

出力例 1

203

N=100 のとき 2N+3=203 です。


入力例 2

27

出力例 2

57
007 - Number of Multiples 1

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 以下の正の整数の中で、X の倍数または Y の倍数であるものの個数はいくつありますか?

制約

  • 1 \leq N \leq 10^6
  • 1 \leq X < Y \leq 10^6
  • 入力はすべて整数

入力

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

N X Y

出力

答えを出力してください。


入力例 1

15 3 5

出力例 1

7

15 以下の正の整数の中で 3 または 5 の倍数であるものは 3,5,6,9,10,12,157 個であるため、7 と出力すれば正解です。


入力例 2

1000000 11 13

出力例 2

160839
008 - Brute Force 1

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

赤・青のカードが各 1 枚ずつあり、あなたはそれぞれのカードに 1 以上 N 以下の整数を 1 つ書き込みます。

カードに書かれた整数の合計が S 以下となる書き方は、いくつありますか?

制約

  • 1 \leq N \leq 1000
  • 1 \leq S \leq 2000
  • 入力はすべて整数

入力

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

N S

出力

答えを出力してください。


入力例 1

3 4

出力例 1

6

合計が 4 以下となる書き込み方は、以下の 6 通りです。

  • 赤のカードに 1 を書き込み、青のカードに 1 を書き込む
  • 赤のカードに 1 を書き込み、青のカードに 2 を書き込む
  • 赤のカードに 1 を書き込み、青のカードに 3 を書き込む
  • 赤のカードに 2 を書き込み、青のカードに 1 を書き込む
  • 赤のカードに 2 を書き込み、青のカードに 2 を書き込む
  • 赤のカードに 3 を書き込み、青のカードに 1 を書き込む

入力例 2

869 120

出力例 2

7140
009 - Brute Force 2

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

注意

この問題は 2.4 節(計算量と全探索)と 3.7 節(動的計画法)両方で扱います。

全探索で解いても 1000 点中 500 点しか得られず、満点(AC)にならないことに注意してください。(本に記されている通り、一部の大きいケースでは現実的な時間で答えが求まらないからです)

問題文

N 枚のカードが横一列に並べられています。左から i 番目 (1 \leq i \leq N) のカードには整数 A_i が書かれています。

カードの中からいくつかを選んで、合計がちょうど S となるようにする方法はありますか。

制約

  • 1 \leq N \leq 60
  • 1 \leq A_i \leq 10000
  • 1 \leq S \leq 10000
  • 入力はすべて整数

部分点

  • 1 \leq N \leq 20 について解けると、500 点が獲得できます。

入力

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

N S
A_1 A_2 A_3 \dots A_N

出力

合計を S となるようにする方法が存在する場合は Yes、そうでない場合は No と出力してください。


入力例 1

3 11
2 5 9

出力例 1

Yes

カード 1, 3 を選べば合計が 11 になるので答えは Yes です。


入力例 2

4 11
3 1 4 5

出力例 2

No
010 - Factorial

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N! の値を求めてください。

制約

  • 1 \leq N \leq 20
  • N は整数

入力

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

N

出力

答えを出力してください。


入力例 1

5

出力例 1

120
011 - Print Prime Numbers

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 以下の素数を、小さい順に出力してください。

制約

  • 2 \leq N \leq 3000
  • N は整数

入力

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

N

出力

N 以下の素数を、小さい順に空白区切りで出力してください。最後の改行を忘れないようにしましょう。


入力例 1

10

出力例 1

2 3 5 7
012 - Primality Test

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N が素数であるかどうかを判定してください。

制約

  • 2 \leq N \leq 10^{13}
  • N は整数

入力

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

N

出力

Nが素数である場合は Yes を、素数でない場合は No を出力してください。


入力例 1

53

出力例 1

Yes

53 は素数です。 よって、Yes と出力すれば正解となります。


入力例 2

77

出力例 2

No

777 で割り切れるため、素数ではありません。 よって、No と出力すれば正解となります。


入力例 3

472249589291

出力例 3

Yes
013 - Divisor Enumeration

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

整数Nが与えられます。 Nの約数を列挙してください。

制約

  • 1 \leq N \leq 10^{13}
  • N は整数

入力

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

N

出力

Nの約数を改行区切りで出力してください。 出力する順番は任意ですが、同じ数が 2 回以上出力されてはいけません。


入力例 1

12

出力例 1

1
2
3
4
6
12

12の約数は1234612の 6 個あります。


入力例 2

827847039317

出力例 2

909863
1
909859
827847039317
014 - Factorization

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

自然数 N素因数分解するプログラムを作成してください。

なお、任意の自然数の素因数分解は一意となることが知られています。

制約

  • 2 \leq N \leq 10^{12}
  • N は整数

入力

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

N

出力

N の素因数を、小さい順に空白区切りで出力してください。

ただし、同じ素因数で N を複数回割ることができる場合は、その素因数は回数分出力してください。


入力例 1

10

出力例 1

2 5

10 = 2 \times 5 です。


入力例 2

36

出力例 2

2 2 3 3

36 = 2 \times 2 \times 3 \times 3 です。

015 - Calculate GCD

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

AB の最大公約数を求めてください。

制約

  • 1 \leq A, B \leq 10^9
  • A, B は整数

入力

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

A B

出力

AB の最大公約数を出力してください。


入力例 1

33 88

出力例 1

11

3388の最大公約数は 11 です。 よって、11 と出力すれば正解となります。


入力例 2

123 777

出力例 2

3

123777 の最大公約数は 3 です。 よって、3 と出力すれば正解となります。

016 - Greatest Common Divisor of N Integers

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 個の正の整数 A_1, A_2, \dots, A_N の最大公約数を求めてください。

制約

  • 2 \leq N \leq 10^5
  • 2 \leq A_i \leq 10^{18}
  • 入力はすべて整数

入力

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

N
A_1 A_2 \cdots A_N

出力

答えを出力してください。


入力例 1

3
12 18 24

出力例 1

6

12, 18, 24 の最大公約数は 6 です。

017 - Least Common Multiple of N Integers

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 個の正の整数 A_1, A_2, \dots, A_N の最小公倍数を求めてください。

制約

  • 2 \leq N \leq 10^5
  • 2 \leq A_i \leq 10^{18}
  • 入力はすべて整数
  • 問題の答えは 10^{18} 以下である

入力

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

N
A_1 A_2 \cdots A_N

出力

答えを出力してください。


入力例 1

3
12 18 14

出力例 1

252

12, 18, 14 の最小公倍数は 252 です。

018 - Convenience Store 1

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

コンビニには N 個の品物が売られており、i 番目(1 \leq i \leq N)の商品の値段は A_i 円です。 異なる 2 つの品物を買う方法のうち、合計金額が 500 円となるものは何通りありますか。

制約

  • 2 \leq N \leq 200000
  • A_i100,200,300,400 のいずれか
  • 入力はすべて整数

入力

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

N
A_1 A_2 \cdots A_N

出力

答えを出力してください。


入力例 1

5
100 300 400 400 200

出力例 1

3
019 - Choose Cards 1

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 枚のカードがあり、左から i 番目(1 \leq i \leq N)のカードの色は A_i です。 A_i=1 のとき赤色、A_i=2 のとき黄色、A_i=3 のとき青色です。同じ色のカードを 2 枚選ぶ方法は何通りありますか。

制約

  • 2 \leq N \leq 500000
  • 1 \leq A_i \leq 3
  • 入力はすべて整数

入力

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

N
A_1 A_2 \cdots A_N

出力

答えを出力してください。


入力例 1

6
1 3 2 1 1 2

出力例 1

4

以下の 4 通りの方法があります。

  • 左から 1 番目のカードと、左から 4 番目のカードを選ぶ。
  • 左から 1 番目のカードと、左から 5 番目のカードを選ぶ。
  • 左から 4 番目のカードと、左から 5 番目のカードを選ぶ。
  • 左から 3 番目のカードと、左から 6 番目のカードを選ぶ。
020 - Choose Cards 2

Time Limit: 5 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 枚のカードがあり、左から i 番目のカードには整数 A_i が書かれています。

カードを 5 枚選ぶ方法のうち、選んだカードに書かれた整数の和がちょうど 1000 となるものは何通りありますか。

制約

  • 5 \leq N \leq 100
  • 1 \leq A_i \leq 1000
  • 入力はすべて整数

入力

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

N
A_1 A_2A_{N}

出力

答えを出力してください。


入力例 1

5
100 150 200 250 300

出力例 1

1

左から 1, 2, 3, 4, 5 番目のカードを選ぶと、整数の和はちょうど 1000 になります。

これ以外の選び方は存在しないので、1 と出力すれば正解となります。


入力例 2

13
243 156 104 280 142 286 196 132 128 195 265 300 130

出力例 2

4

整数の和が 1000 となる選び方として、以下の 4 通りがあります。

  • 左から 1, 8, 10, 12, 13 番目のカードを選ぶ
  • 左から 2, 3, 4, 10, 11 番目のカードを選ぶ
  • 左から 2, 6, 9, 12, 13 番目のカードを選ぶ
  • 左から 4, 8, 9, 10, 11 番目のカードを選ぶ
021 - Combination Easy

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

整数 n, r が与えられます。{}_n\mathrm{C}_r を出力するプログラムを作成してください。

制約

  • 1 \leq r \leq n \leq 20
  • 入力はすべて整数

入力

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

n r

出力

答えを出力してください。


入力例 1

6 2

出力例 1

15
022 - Choose Cards 3

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 枚のカードがあり、左から i 番目のカードには整数 A_i が書かれています。 和が 100000 となる 2 枚のカードの選び方は何通りあるかを求めるプログラムを作成してください。

制約

  • 2 \leq N \leq 200000
  • 1 \leq A_i \leq 99999
  • 入力はすべて整数

入力

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

N
A_1 A_2 \cdots A_N

出力

答えを出力してください。


入力例 1

6
40000 50000 20000 80000 50000 30000

出力例 1

2

和が 100000 となる選び方として、以下の 2 通りがあります。

  • 左から 2 番目のカードと、左から 5 番目のカードを選ぶ。
  • 左から 3 番目のカードと、左から 4 番目のカードを選ぶ。
023 - Dice Expectation

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

青・赤 2 つの N 面体サイコロがあります。各サイコロの出目は以下の通りです。

  • 青のサイコロ: B_1, B_2, \dots, B_N が等確率で出る
  • 赤のサイコロ: R_1, R_2, \dots, R_N が等確率で出る

あなたは 2 つのサイコロを同時に振り、出目の合計だけ賞金がもらえます。もらえる賞金の期待値を計算してください。

制約

  • 2 \leq N \leq 100000
  • 0 \leq B_i, R_i \leq 100
  • 入力はすべて整数

入力

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

N
B_1 B_2 \dots B_{N}
R_1 R_2 \dots R_{N}

出力

もらえる賞金の期待値を計算してください。 なお、想定解答との絶対誤差または相対誤差が 10^{-6} 以下であれば正解として扱われます。


入力例 1

3
1 2 3
10 20 30

出力例 1

22.000000000000

もらえる賞金の期待値は 22 であり、これを出力すれば正解となります。

なお、想定解答との絶対誤差または相対誤差が 10^{-6} 以下であれば、小数点以下何桁出力しても構いません。

024 - Answer Exam Randomly

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

ある国語のテストの問題は N 問からなり、すべて選択式問題です。

i 問目 (1 \leq i \leq N)P_i 個の選択肢から 1 つの正解を選ぶ形式であり、配点は Q_i 点です。

太郎君はまったく手がかりがつかめなかったので、全部の問題をランダムに回答することにしました。太郎君が得られる点数の期待値を計算してください。

制約

  • 1 \leq N \leq 50
  • 2 \leq P_i \leq 9
  • 1 \leq Q_i \leq 200
  • 入力はすべて整数

入力

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

N
P_1 Q_1
P_2 Q_2
 :
P_N Q_N

出力

太郎君が得られる点数の期待値を出力してください。 なお、想定解答との絶対誤差または相対誤差が 10^{-6} 以下であれば正解として扱われます。


入力例 1

2
2 50
4 100

出力例 1

50.000000000000

太郎君が得られる点数の期待値は 50 であり、これを出力すれば正解となります。

025 - Jiro's Vacation

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

次郎君の夏休みは N 日間あります。 彼は i 日目(1 \leq i \leq N)日目の勉強時間を以下の手順で決めます。

  • 1 日の最初にサイコロを振る
  • サイコロを振って 1,2 が出た場合: A_i 時間勉強する
  • サイコロを振って 3,4,5,6 が出た場合: B_i 時間勉強する

彼の夏休みの合計勉強時間の期待値を求めるプログラムを作成してください。

制約

  • 2 \leq N \leq 200000
  • 0 \leq A_i, B_i \leq 24
  • 入力はすべて整数

入力

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

N
A_1 A_2 \cdots A_N
B_1 B_2 \cdots B_N

出力

答えを出力してください。 なお、想定解答との絶対誤差または相対誤差が 10^{-3} 以下であれば正解として扱われます。


入力例 1

5
3 1 4 1 5
9 2 6 5 3

出力例 1

21.333333333333
026 - Coin Gacha

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

1 ドル払うと、N 種類のコインのうち 1 つが等確率で出現する機械があります。 全種類のコインを集めるまでに支払う金額の期待値を計算するプログラムを作成してください。

制約

  • 2 \leq N \leq 10^6
  • N は整数

入力

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

N

出力

答えを出力してください。 なお、想定解答との絶対誤差または相対誤差が 10^{-6} 以下であれば正解として扱われます。


入力例 1

5

出力例 1

11.416666666667
027 - Sorting

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

長さ N の配列 [A_1, A_2, \cdots, A_N] が与えられます。

書籍に記されている「マージソートを行う未完成のプログラム」を元に、配列を昇順に並び替えるプログラムを作成してください。

制約

smallと名前がついているテストケースを正答することで、満点の 50 \% を得ることができます。 smallのテストケースは以下の制約を満たします。

  • 2 \leq N \leq 2000
  • 1 \leq A_i \leq 10^9
  • 入力はすべて整数

さらに以下の制約を満たすテストケースを正答することで、満点を得ることができます。

  • 2 \leq N \leq 200000
  • 1 \leq A_i \leq 10^9
  • 入力はすべて整数

入力

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

N
A_1 A_2A_{N}

出力

与えられた配列を昇順に並び替えて出力してください。


入力例 1

3
3 1 2

出力例 1

1 2 3

入力例 2

10
658 299 47 507 122 969 449 68 513 800

出力例 2

47 68 122 299 449 507 513 658 800 969
028 - Frog 1

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 100

問題文

N 個の足場があります。 足場には 1, 2, \ldots, N と番号が振られています。 各 i (1 \leq i \leq N) について、足場 i の高さは h_i です。

最初、足場 1 にカエルがいます。 カエルは次の行動を何回か繰り返し、足場 N まで辿り着こうとしています。

  • 足場 i にいるとき、足場 i + 1 または i + 2 へジャンプする。 このとき、ジャンプ先の足場を j とすると、コスト |h_i - h_j| を支払う。

カエルが足場 N に辿り着くまでに支払うコストの総和の最小値を求めてください。

制約

  • 入力はすべて整数である。
  • 2 \leq N \leq 10^5
  • 1 \leq h_i \leq 10^4

入力

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

N
h_1 h_2 \ldots h_N

出力

カエルが支払うコストの総和の最小値を出力せよ。


入力例 1

4
10 30 40 20

出力例 1

30

足場 124 と移動すると、コストの総和は |10 - 30| + |30 - 20| = 30 となります。


入力例 2

2
10 10

出力例 2

0

足場 12 と移動すると、コストの総和は |10 - 10| = 0 となります。


入力例 3

6
30 10 60 10 60 50

出力例 3

40

足場 1356 と移動すると、コストの総和は |30 - 60| + |60 - 60| + |60 - 50| = 40 となります。

Score : 100 points

Problem Statement

There are N stones, numbered 1, 2, \ldots, N. For each i (1 \leq i \leq N), the height of Stone i is h_i.

There is a frog who is initially on Stone 1. He will repeat the following action some number of times to reach Stone N:

  • If the frog is currently on Stone i, jump to Stone i + 1 or Stone i + 2. Here, a cost of |h_i - h_j| is incurred, where j is the stone to land on.

Find the minimum possible total cost incurred before the frog reaches Stone N.

Constraints

  • All values in input are integers.
  • 2 \leq N \leq 10^5
  • 1 \leq h_i \leq 10^4

Input

Input is given from Standard Input in the following format:

N
h_1 h_2 \ldots h_N

Output

Print the minimum possible total cost incurred.


Sample Input 1

4
10 30 40 20

Sample Output 1

30

If we follow the path 124, the total cost incurred would be |10 - 30| + |30 - 20| = 30.


Sample Input 2

2
10 10

Sample Output 2

0

If we follow the path 12, the total cost incurred would be |10 - 10| = 0.


Sample Input 3

6
30 10 60 10 60 50

Sample Output 3

40

If we follow the path 1356, the total cost incurred would be |30 - 60| + |60 - 60| + |60 - 50| = 40.

029 - Climb Stairs

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

太郎君は N 段の階段を上ろうとしています。彼は一歩で 1 段か 2 段上ることができます。

0 段目から出発し、N 段目にたどり着くまでの移動方法が何通りあるかを計算してください。

制約

  • 1 \leq N \leq 45
  • N は整数

入力

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

N

出力

答えを出力してください。


入力例 1

4

出力例 1

5

0 段目から 4 段目まで移動する方法は以下の 5 通りがあります。

  • 0 段目 → 1 段目 → 2 段目 → 3 段目 → 4 段目
  • 0 段目 → 1 段目 → 2 段目 → 4 段目
  • 0 段目 → 1 段目 → 3 段目 → 4 段目
  • 0 段目 → 2 段目 → 3 段目 → 4 段目
  • 0 段目 → 2 段目 → 4 段目

よって、5 と出力すれば正解となります。


入力例 2

45

出力例 2

1836311903
030 - Knapsack 1

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 100

問題文

N 個の品物があります。 品物には 1, 2, \ldots, N と番号が振られています。 各 i (1 \leq i \leq N) について、品物 i の重さは w_i で、価値は v_i です。

太郎君は、N 個の品物のうちいくつかを選び、ナップサックに入れて持ち帰ることにしました。 ナップサックの容量は W であり、持ち帰る品物の重さの総和は W 以下でなければなりません。

太郎君が持ち帰る品物の価値の総和の最大値を求めてください。

制約

  • 入力はすべて整数である。
  • 1 \leq N \leq 100
  • 1 \leq W \leq 10^5
  • 1 \leq w_i \leq W
  • 1 \leq v_i \leq 10^9

入力

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

N W
w_1 v_1
w_2 v_2
:
w_N v_N

出力

太郎君が持ち帰る品物の価値の総和の最大値を出力せよ。


入力例 1

3 8
3 30
4 50
5 60

出力例 1

90

品物 1, 3 を選べばよいです。 すると、重さの総和は 3 + 5 = 8 となり、価値の総和は 30 + 60 = 90 となります。


入力例 2

5 5
1 1000000000
1 1000000000
1 1000000000
1 1000000000
1 1000000000

出力例 2

5000000000

答えは 32-bit 整数型に収まらない場合があります。


入力例 3

6 15
6 5
5 6
6 4
6 6
3 5
7 2

出力例 3

17

品物 2, 4, 5 を選べばよいです。 すると、重さの総和は 5 + 6 + 3 = 14 となり、価値の総和は 6 + 6 + 5 = 17 となります。

Score : 100 points

Problem Statement

There are N items, numbered 1, 2, \ldots, N. For each i (1 \leq i \leq N), Item i has a weight of w_i and a value of v_i.

Taro has decided to choose some of the N items and carry them home in a knapsack. The capacity of the knapsack is W, which means that the sum of the weights of items taken must be at most W.

Find the maximum possible sum of the values of items that Taro takes home.

Constraints

  • All values in input are integers.
  • 1 \leq N \leq 100
  • 1 \leq W \leq 10^5
  • 1 \leq w_i \leq W
  • 1 \leq v_i \leq 10^9

Input

Input is given from Standard Input in the following format:

N W
w_1 v_1
w_2 v_2
:
w_N v_N

Output

Print the maximum possible sum of the values of items that Taro takes home.


Sample Input 1

3 8
3 30
4 50
5 60

Sample Output 1

90

Items 1 and 3 should be taken. Then, the sum of the weights is 3 + 5 = 8, and the sum of the values is 30 + 60 = 90.


Sample Input 2

5 5
1 1000000000
1 1000000000
1 1000000000
1 1000000000
1 1000000000

Sample Output 2

5000000000

The answer may not fit into a 32-bit integer type.


Sample Input 3

6 15
6 5
5 6
6 4
6 6
3 5
7 2

Sample Output 3

17

Items 2, 4 and 5 should be taken. Then, the sum of the weights is 5 + 6 + 3 = 14, and the sum of the values is 6 + 6 + 5 = 17.

031 - Taro's Vacation

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

太郎君の夏休みは N 日間あり、i 日目に勉強すると A_i だけ実力が上がることが知られています。

しかし、彼は 2 日連続で勉強したくありません。太郎君が夏休みの間に実力をどれだけ上げられるか、その最大値を求めるプログラムを作成してください。

制約

  • 2 \leq N \leq 500000
  • 0 \leq A_i \leq 10^9
  • 入力はすべて整数

入力

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

N
A_1 A_2 \cdots A_N

出力

答えを出力してください。


入力例 1

5
2 5 3 3 1

出力例 1

8

2 日目、4 日目に勉強すると、実力が 5+3=8 上がります。

032 - Binary Search

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

長さ N の配列 A = [A_1, \cdots, A_N]1 個の質問(クエリ)が与えられます。 質問の内容は以下の通りです。

  • 質問: 要素 X は配列 A の中にありますか?

与えられた質問について、答えを出力するプログラムを作成してください。

制約

  • 1 \leq N \leq 10^5
  • 1 \leq X \leq 10^9
  • 1 \leq A_i \leq 10^9
  • 入力はすべて整数

入力

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

N X
A_1 A_2A_{N}

出力

配列 A に要素 X が存在する場合はYesを、存在しない場合はNoを出力してください。


入力例 1

7 3
1 2 3 4 5 6 7

出力例 1

Yes

入力例 2

7 9
1 2 3 4 5 6 7

出力例 2

No

入力例 3

7 1
2 3 4 5 6 7 8

出力例 3

No
033 - Distance

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

2 次元平面上に点 A, B, C があります。点 A の座標は (a_x,a_y)、点 B の座標は (b_x,b_y) 、点 C の座標は (c_x,c_y) です。

A と線分 BC 上の点の最短距離を求めてください。

制約

  • -10^9 \le a_x,a_y,b_x,b_y,c_x,c_y \le 10^9
  • 入力はすべて整数
  • A,B,C の位置は相異なる

入力

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

a_x a_y
b_x b_y
c_x c_y

出力

答えを出力してください。なお、想定解答との絶対誤差または相対誤差が 10^{-6} 以下であれば正解と判定されます。


入力例 1

0 5
1 1
3 0

出力例 1

4.123105625618

入力例 2

-40 -30
-50 -10
-20 -20

出力例 2

15.811388300842

入力例 3

1000000000 1000000000
-1000000000 -1000000000
0 -1000000000

出力例 3

2236067977.499789714813
034 - Nearest Points

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

2 次元平面上に N 個の点があり、i 番目の点 (1 \leq i \leq N) の座標は (x_i, y_i) です。

最も近い 2 つの点の距離を求めてください。

制約

  • 2 \leq N \leq 2000
  • 0 \leq x_i, y_i \leq 10^6 (1 \leq i \leq N)
  • 入力はすべて整数

入力

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

N
x_1 y_1
\vdots
x_N y_N

出力

答えを出力してください。正しい値との絶対誤差または相対誤差が 10^{-9} 以下であれば正解とみなされます。


入力例 1

4
0 1
2 0
2 3
3 1

出力例 1

1.4142135623730950488016887242
035 - Two Circles

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

二次元平面上に、以下の 2 つの円があります。

  • 1 つ目の円の中心座標は (x_1, y_1)、半径は r_1
  • 2 つ目の円の中心座標は (x_2, y_2)、半径は r_2

さて、2 つの円の位置関係は以下の 5 通りのいずれかです。

[1] 一方の円が他方の円を完全に含み、2 つの円は接していない
[2] 一方の円が他方の円を完全に含み、2 つの円は接している
[3] 2 つの円が互いに交差する
[4] 2 つの円の内部に共通部分は存在しないが、2 つの円は接している
[5] 2 つの円の内部に共通部分は存在せず、2 つの円は接していない

与えられた 2 つの円に当てはまる位置関係の番号を出力してください。

制約

  • 0 \leq x_1, x_2, y_1, y_2 \leq 10^6
  • 1 \leq r_1, r_2 \leq 10^6
  • 入力はすべて整数

入力

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

x_1 y_1 r_1
x_2 y_2 r_2

出力

当てはまる位置関係の番号を出力してください。


入力例 1

4 1 2
1 5 3

出力例 1

4

入力例 2

1 1 6
3 3 2

出力例 2

1

入力例 3

6 6 6
6 6 6

出力例 3

2

2 つの円がぴったり一致する場合も、2 番の位置関係とみなします。

036 - : (Colon)

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 300

問題文

時針と分針の長さがそれぞれ A センチメートル、B センチメートルであるアナログ時計を考えます。

時針と分針それぞれの片方の端点は同じ定点に固定されており、この点を中心としてそれぞれの針は一定の角速度で時計回りに回転します。時針は 12 時間で、分針は 1 時間で 1 周します。

0 時ちょうどに時針と分針は重なっていました。ちょうど HM 分になったとき、2 本の針の固定されていない方の端点は何センチメートル離れているでしょうか。

制約

  • 入力はすべて整数
  • 1 \leq A, B \leq 1000
  • 0 \leq H \leq 11
  • 0 \leq M \leq 59

入力

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

A B H M

出力

答えを、単位を除いて出力せよ。正しい値との絶対誤差または相対誤差が 10^{-9} 以下であれば正解とみなされる。


入力例 1

3 4 9 0

出力例 1

5.00000000000000000000

2 本の針は図のようになるので、答えは 5 センチメートルです。

9時0分のアナログ時計


入力例 2

3 4 10 40

出力例 2

4.56425719433005567605

2 本の針は図のようになります。各針は常に一定の角速度で回ることに注意してください。

10時40分のアナログ時計

Score: 300 points

Problem Statement

Consider an analog clock whose hour and minute hands are A and B centimeters long, respectively.

An endpoint of the hour hand and an endpoint of the minute hand are fixed at the same point, around which each hand rotates clockwise at constant angular velocity. It takes the hour and minute hands 12 hours and 1 hour to make one full rotation, respectively.

At 0 o'clock, the two hands overlap each other. H hours and M minutes later, what is the distance in centimeters between the unfixed endpoints of the hands?

Constraints

  • All values in input are integers.
  • 1 \leq A, B \leq 1000
  • 0 \leq H \leq 11
  • 0 \leq M \leq 59

Input

Input is given from Standard Input in the following format:

A B H M

Output

Print the answer without units. Your output will be accepted when its absolute or relative error from the correct value is at most 10^{-9}.


Sample Input 1

3 4 9 0

Sample Output 1

5.00000000000000000000

The two hands will be in the positions shown in the figure below, so the answer is 5 centimeters.

The clock at <var>9</var> o'clock


Sample Input 2

3 4 10 40

Sample Output 2

4.56425719433005567605

The two hands will be in the positions shown in the figure below. Note that each hand always rotates at constant angular velocity.

The clock at <var>10:40</var>

037 - Intersection

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

2 次元平面上に 2 つの線分があります。1 つ目の線分は座標 (x_1, y_1) と 座標 (x_2, y_2) を結んでいます。2 つ目の線分は座標 (x_3, y_3) と 座標 (x_4, y_4) を結んでいます。

この 2 つの線分が交差するならば Yes を、交差しないならば No を出力してください。

ここで、2 つの線分が交差しているとは、両方に共通して含まれる点が存在することを言います。

制約

  • 0 \leq x_1, x_2, x_3, x_4, y_1, y_2, y_3, y_4 \leq 10^9
  • (x_1, y_1) \neq (x_2, y_2)
  • (x_3, y_3) \neq (x_4, y_4)
  • 入力はすべて整数

入力

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

x_1 y_1
x_2 y_2
x_3 y_3
x_4 y_4

出力

2 つの線分が交差するならば Yes を、交差しないならば No を出力してください。


入力例 1

1 1
2 2
1 2
2 1

出力例 1

Yes

入力例 2

1 2
2 2
1 1
1 3

出力例 2

Yes

入力例 3

100000001 200000000
200000000 200000000
100000000 100000000
100000000 300000000

出力例 3

No

入力例 4

1 1
3 3
2 2
4 4

出力例 4

Yes

入力例 5

4 1
3 2
2 3
1 4

出力例 5

No
038 - How Many Guests?

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

遊園地「ALGO-RESORT」では N 日間にわたるイベントが開催され、 i 日目 (1 \leq i \leq N) には A_i 人が来場しました。

以下の合計 Q 個の質問に答えるプログラムを作成してください。

  • 1 個目の質問:L_1 日目から R_1 日目までの合計来場者数は?
  • 2 個目の質問:L_2 日目から R_2 日目までの合計来場者数は?
  • :
  • Q 個目の質問:L_Q 日目から R_Q 日目までの合計来場者数は?

制約

  • 1 \le N,Q \le 10^5
  • 1 \le A_i \le 10000
  • 1 \le L_i \le R_i \le N
  • 入力はすべて整数

入力

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

N Q
A_1 A_2 \cdots A_N
L_1 R_1
L_2 R_2
 :
L_Q R_Q

出力

全体で Q 行出力してください。

i 行目 (1 \leq i \leq Q) には、i 個目の質問への答えを整数で出力してください。


入力例 1

10 5
8 6 9 1 2 1 10 100 1000 10000
2 3
1 4
3 9
6 8
1 10

出力例 1

15
24
1123
111
11137

この入力には 5 個の質問が含まれています。

  • 1 個目の質問は 2 日目から 3 日目までの合計来場者数を尋ねるもので、これに対する答えは 6+9=15 です。
  • 2 個目の質問は 1 日目から 4 日目までの合計来場者数を尋ねるもので、これに対する答えは 8+6+9+1=24 です。
039 - Snowy Days

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

注意

書籍の版によっては、書籍内のコードが正しくない場合があります。正誤表を参照してください。

書籍内のコードの訂正点 誤:

// 答えの出力
for (int i = 1; i <= N - 1; i++) {

正:

// 答えの出力
for (int i = 2; i <= N; i++) {

問題文

ALGO 国は N 個の区画に分かれており、西から順に 1 から N までの番号が付けられています。

最初はどの区画にも雪が積もっていませんが、これから Q 日間にわたって雪が降り続け、 i 日目 (1 \leq i \leq Q) には区画 L_i, L_{i+1}, \dots, R_i の積雪が X_i \text{cm} 増加することが予想されています。

予想通りに雪が降り終わった後の積雪の大小関係を表す、 N-1 文字の文字列を出力するプログラムを作成してください。i 文字目は以下のようにしてください。

  • (区画 i の積雪) > (区画 i + 1 の積雪) の場合:>
  • (区画 i の積雪) = (区画 i + 1 の積雪) の場合:=
  • (区画 i の積雪) < (区画 i + 1 の積雪) の場合:<

たとえば積雪が区画 1 から順に [3 \text{cm}, 8 \text{cm}, 5 \text{cm}, 5 \text{cm}, 4 \text{cm}] である場合、 <>=> という出力が正解です。

制約

  • 2 \le N \le 10^5
  • 1 \le Q \le 10^5
  • 1 \le L_i \le R_i \le N
  • 1 \le X_i \le 10000
  • 入力はすべて整数

入力

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

N Q
L_1 R_1 X_1
L_2 R_2 X_2
\vdots
L_Q R_Q X_Q

出力

問題文中の指示通り出力してください。


入力例 1

5 3
1 2 3
2 5 4
2 4 1

出力例 1

<>=>

このケースでは、積雪は次のように変化します。

  • 最初、積雪は区間 1 から順に [0,0,0,0,0] です。
  • 1 日目を終え、区間 1 から 2 の積雪が 3 増加しました。積雪は区間 1 から順に [3,3,0,0,0] です。
  • 2 日目を終え、区間 2 から 5 の積雪が 4 増加しました。積雪は区間 1 から順に [3,7,4,4,4] です。
  • 3 日目を終え、区間 2 から 4 の積雪が 1 増加しました。積雪は区間 1 から順に [3,8,5,5,4] です。

このとき、出力すべき文字列は <>=> となります。


入力例 2

10 10
1 1 1
6 7 28
3 5 4096
6 10 2000
1 10 10000
2 8 2
10 10 2
1 2 8000
6 7 20
6 8 2048

出力例 2

<>====>><
040 - Travel

Time Limit: 3 sec / Memory Limit: 1024 MB

配点: 1000

問題文

ALGO 鉄道の情報線には N 個の駅があり、西から順に 1 から N までの番号が付けられています。駅 i と駅 i+1 (1 \leq i \leq N-1) は双方向につながっており、距離は A_i キロメートルです。

太郎君は、駅 B_1 から出発し、駅 B_2, B_3, \dots, B_{M-1} をその順に経由し、駅 B_M で旅を終える計画を立てました。彼が旅全体で何メートル移動することになるかを求めてください。

制約

  • 2 \leq N \leq 200\,000
  • 2 \leq M \leq 200\,000
  • 1 \leq A_i \leq 10^7 (1 \leq i \leq N-1)
  • 1 \leq B_j \leq N (1 \leq j \leq M)
  • B_{j} \neq B_{j+1} (1 \leq j \leq M-1)
  • 入力はすべて整数

入力

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

N
A_1 \dots A_{N-1}
M
B_1
\vdots
B_M

出力

彼が旅全体で何メートル移動することになるかを、単位(メートル)を省いて出力してください。


入力例 1

4
8 6 9
6
2
1
3
2
3
4

出力例 1

43

太郎君は駅 2 から出発し、次のように移動します。

  • 2 から 駅 1 に行く。このとき移動する距離は 8 メートル。
  • 1 から 駅 3 に行く。このとき移動する距離は 14 メートル。
  • 3 から 駅 2 に行く。このとき移動する距離は 6 メートル。
  • 2 から 駅 3 に行く。このとき移動する距離は 6 メートル。
  • 3 から 駅 4 に行く。このとき移動する距離は 9 メートル。

したがって、太郎君の移動距離は合計で 43 メートルです。

041 - Convenience Store 2

Time Limit: 6 sec / Memory Limit: 1024 MB

配点: 1000

問題文

あるコンビニは時刻 0 に開店し、時刻 T に閉店します。このコンビニには N 人の従業員が働いており、i 番目 (1 \leq i \leq N) の従業員は時刻 L_i に出勤し、時刻 R_i に退勤します。

t = 0, 1, 2, \dots, T-1 それぞれについて、時刻 t+0.5 にコンビニにいる従業員の数を出力するプログラムを作成してください。

制約

  • 1 \leq T \leq 500\,000
  • 1 \leq N \leq 500\,000
  • 0 \leq L_i < R_i \leq T (1 \leq i \leq N)
  • 入力はすべて整数

入力

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

T
N
L_1 R_1
\vdots
L_N R_N

出力

全体で T 行出力してください。

t + 1 行目 (0 \leq t \leq T-1) には、時刻 t+0.5 にコンビニにいる従業員の数を出力してください。


入力例 1

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

出力例 1

2
3
4
1
0
3
0
0
0
0

このコンビニは時刻 0 に開店し、時刻 10 に閉店します。従業員の出退勤の様子を図に表すと以下のようになります。

042 - Sum of Divisors

Time Limit: 3 sec / Memory Limit: 1024 MB

配点 : 400

問題文

正整数 X に対し、X の正の約数の個数を f(X) とします。

正整数 N が与えられるので、\sum_{K=1}^N K\times f(K) を求めてください。

制約

  • 1 \leq N \leq 10^7

入力

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

N

出力

\sum_{K=1}^N K\times f(K) を出力せよ。


入力例 1

4

出力例 1

23

f(1)=1, f(2)=2, f(3)=2, f(4)=3 なので、答えは 1\times 1 + 2\times 2 + 3\times 2 + 4\times 3 =23 となります。


入力例 2

100

出力例 2

26879

入力例 3

10000000

出力例 3

838627288460105

オーバーフローに注意してください。

Score : 400 points

Problem Statement

For a positive integer X, let f(X) be the number of positive divisors of X.

Given a positive integer N, find \sum_{K=1}^N K\times f(K).

Constraints

  • 1 \leq N \leq 10^7

Input

Input is given from Standard Input in the following format:

N

Output

Print the value \sum_{K=1}^N K\times f(K).


Sample Input 1

4

Sample Output 1

23

We have f(1)=1, f(2)=2, f(3)=2, and f(4)=3, so the answer is 1\times 1 + 2\times 2 + 3\times 2 + 4\times 3 =23.


Sample Input 2

100

Sample Output 2

26879

Sample Input 3

10000000

Sample Output 3

838627288460105

Watch out for overflows.

043 - Depth First Search

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

各頂点に 1,2,\dots,N の番号がついた、 N 頂点 M 辺の無向グラフが与えられます。
i 番目の辺は頂点 A_i と頂点 B_i とを結んでいます。
このグラフ全体が連結であるかどうか判定して以下のように出力してください。

  • もしグラフ全体が連結であれば、 The graph is connected. と出力する
  • そうでなければ、 The graph is not connected. と出力する

制約

  • 入力はすべて整数
  • 1 \le N \le 10^5
  • 0 \le M \le \min(10^5,\frac{N(N-1)}{2})
  • 1 \le A_i < B_i \le N
  • グラフに多重辺や自己ループは存在しない

入力

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

N M
A_1 B_1
A_2 B_2
\vdots
A_M B_M

出力

問題文中の指示通り出力せよ。


入力例 1

3 2
1 3
2 3

出力例 1

The graph is connected.

与えられたグラフは連結です。


入力例 2

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

出力例 2

The graph is not connected.

与えられたグラフは連結ではありません。

044 - Shortest Path 1

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

N 頂点 M 辺の無向グラフが与えられます。各頂点には 1 から N までの番号が付けられており、i 番目の辺は頂点 A_i と頂点 B_i を結んでいます。

1 以上 N 以下の全ての整数 k について、以下の問いに答えてください。

頂点 1 から頂点 k まで、辺を何本かたどって移動することを考えるとき、たどるべき辺の本数の最小値を出力せよ。ただし、移動不可能な場合は -1 を出力せよ。

制約

  • 入力はすべて整数
  • 1 \le N \le 10^5
  • 0 \le M \le \min(10^5,\frac{N(N-1)}{2})
  • 1 \le A_i < B_i \le N
  • グラフに多重辺や自己ループは存在しない

入力

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

N M
A_1 B_1
A_2 B_2
\vdots
A_M B_M

出力

全体で N 行出力してください。

i 行目には、 k=i の場合の答えを出力してください。


入力例 1

3 2
1 3
2 3

出力例 1

0
2
1
  • 頂点 1 から頂点 1 には、 0 本の辺を辿って移動可能であるとします。
  • 頂点 1 から頂点 2 に移動する際、 1 \rightarrow 3 \rightarrow 2 と移動すると辿る辺の数が最小になります。
  • 頂点 1 から頂点 3 に移動する際、 1 \rightarrow 3 と移動すると辿る辺の数が最小になります。

入力例 2

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

出力例 2

0
1
2
1
-1
-1

与えられるグラフが連結であるとは限りません。

045 - Easy Graph Problem(★2)

Time Limit: 2 sec / Memory Limit: 1024 MB

配点:2

問題文

N 頂点 M 辺の連結な単純無向グラフが与えられます。グラフの頂点には、それぞれ 1 から N までの番号が振られています。 i 番目の辺は、頂点 a_ib_i を双方向に結んでいます。

以下の条件を満たす頂点の個数はいくつあるか出力してください。

  • 自分自身より頂点番号が小さい隣接頂点がちょうど 1 つ存在する

制約

  • 2 \leq N \leq 100000
  • N - 1 \leq M \leq \mathrm{min}(\frac{N(N - 1)}{2}, 100000)
  • 1 \leq a_i, b_i \leq N
  • 与えられるグラフは単純グラフである
  • 与えられるグラフは連結である
  • 入力はすべて整数で与えられる

入力

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

N M
a_1 b_1
\vdots
a_{M} b_{M}

出力

条件を満たす頂点の個数を一行に出力してください。


入力例 1

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

出力例 1

3

条件を満たす頂点は、2, 4, 53 つです。

  • 頂点 2 は、自分自身より頂点番号が小さい隣接頂点として、頂点 1 のみをもつ
  • 頂点 4 は、自分自身より頂点番号が小さい隣接頂点として、頂点 2 のみをもつ
  • 頂点 5 は、自分自身より頂点番号が小さい隣接頂点として、頂点 2 のみをもつ

入力例 2

2 1
1 2

出力例 2

1

条件を満たす頂点は 2 のみです。


入力例 3

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

出力例 3

0

Source Name

「競プロ典型90問」78日目
046 - 幅優先探索

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

たかはし君は迷路が好きです。今、上下左右に移動できる二次元盤面上の迷路を解こうとしています。盤面は以下のような形式で与えられます。

  • まず、盤面のサイズと、迷路のスタート地点とゴール地点の座標が与えられる。
  • 次に、それぞれのマスが通行可能な空きマス(.)か通行不可能な壁マス(#)かという情報を持った盤面が与えられる。盤面は壁マスで囲まれている。スタート地点とゴール地点は必ず空きマスであり、スタート地点からゴール地点へは、空きマスを辿って必ずたどり着ける。具体的には、入出力例を参考にすると良い。

今、彼は上記の迷路を解くのに必要な最小移動手数を求めたいと思っています。どうやって求めるかを調べていたところ、「幅優先探索」という手法が効率的であることを知りました。幅優先探索というのは以下の手法です。

  • スタート地点から近い(たどり着くための最短手数が少ない)マスから順番に、たどり着く手数を以下のように確定していく。説明の例として図1の迷路を利用する。

図1. 説明に用いる盤面

  • 最初に、スタート地点は、スタート地点から手数0でたどり着ける(当然)ので、最短手数0で確定させる(図2)。
図2. 最短手数0でたどり着けるマスが確定(初期)

  • 次に、スタート地点の四近傍(上下左右)の空きマスについて、手数1で確定させる(図3)。
図3. 最短手数1でたどり着けるマスが確定

  • 次に、手数1で確定したそれぞれのマスの4近傍を見て、まだ確定していない空きマスがあればそのマスを手数2で確定させる(図4)。
図4. 最短手数2でたどり着けるマスが確定

  • 次に、手数2で確定したそれぞれのマスの4近傍を見て、まだ確定していない空きマスがあればそのマスを手数3で確定させる(図5)。
図5. 最短手数3でたどり着けるマスが確定

  • 次に、手数3で確定したそれぞれのマスの4近傍を見て、まだ確定していない空きマスがあればそのマスを手数4で確定させる(図6)。
図6. 最短手数4でたどり着けるマスが確定
  • 上記の手順を確定の更新が無くなるまで繰り返すと、スタート地点からたどり着ける全ての空きマスについて最短手数が確定する(図7)。スタートとゴールは必ず空きマスを辿ってたどり着けるという制約があるので、ゴール地点への最短手数も分かる。
図7. すべてのたどり着けるマスへの最短手数が確定

さて、この処理をスマートに実装するためには、先入れ先出し(FIFO)のキュー(Queue)というデータ構造を用いると良いことが知られています。もちろん、使わなくても解くことは可能です。今回、よく分からなければ思いついた方法で解くことをおすすめします。先入れ先出しのキューとは以下のような機能を持つデータ構造です。

  • 追加(Push): キューの末尾にデータを追加する。
  • 取り出し(Pop): キューの先頭のデータを取り出す。

このデータ構造を使うと、先ほどの幅優先探索の説明における「マスの最短手数の確定」のタイミングでその確定マスをキューに追加し、追加操作が終わればPopを行い、取り出したマスの4近傍を調べるということを繰り返せば(つまり先に追加されたものから順番に処理していけば)、簡潔に処理ができることが分かります。


入力

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

R\ C
sy\ sx
gy\ gx
c_{(1,1)}c_{(1,2)}\ …\ c_{(1,C)}
c_{(2,1)}c_{(2,2)}\ …\ c_{(2,C)}
:
c_{(R,1)}c_{(R,2)}\ …\ c_{(R,C)}
  • 1 行目には、行数 R(1≦R≦50)と列数 C(1≦C≦50)がそれぞれ空白区切りで与えられる。
  • 2 行目には、スタート地点の座標 (sy,sx) が空白区切りで与えられる。スタート地点が sysx 列にあることを意味する。 1≦sy≦R かつ 1≦sx≦C である。
  • 3 行目には、ゴール地点の座標 (gy,gx) が空白区切りで与えられる。ゴール地点が gygx 列にあることを意味する。 1≦gy≦R かつ 1≦gx≦C であり、(gy,gx)≠(sy,sx)であることが保障されている。
  • 4 行目から R 行、長さ C の文字列が 1 行ずつ与えられる。各文字は . もしくは # のいずれかであり、i 回目 (1≦i≦R) に与えられられる文字列のうち j 文字目 (1≦j≦C) について、その文字が . なら、マス (i,j) が空きマスであり、# なら、マス (i,j) が壁マスであることをあらわす。
  • 盤面は壁マスで囲まれている。つまり、i=1,i=R,j=1,j=C のうちいずれか1つでも条件を満たすマス (i,j) について、c_{(i,j)}#である。また、スタート地点とゴール地点は必ず空きマスであり、スタート地点からゴール地点へは、空きマスを辿って必ずたどり着ける。

出力

  • スタート地点からゴール地点に移動する最小手数を 1 行に出力せよ。最後に改行を忘れないこと。

入力例1

7 8
2 2
4 5
########
#......#
#.######
#..#...#
#..##..#
##.....#
########

出力例1

11

問題文中の例です。


入力例2

5 8
2 2
2 4
########
#.#....#
#.###..#
#......#
########

出力例2

10

図8のように進めば 10 手でたどり着くことが進むことができます(※Sはスタート、Gはゴールをあらわす)。

図8. 入出力例2において最小手数10を達成する進み方


入力例3

50 50
2 2
49 49
##################################################
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
#................................................#
##################################################

出力例3

94

もはやただの広い空間であり、迷路と呼んで良いのかは分からないがこの問題でこのような盤面も迷路として扱う。兎にも角にも、スタートからゴールへの最短手数は 94 である。

047 - Bipartite Graph

Time Limit: 3 sec / Memory Limit: 1024 MB

配点: 1000

問題文

頂点数が N、辺の数が M のグラフが与えられます。各頂点には 1 から N までの番号が付けられており、i 番目の辺 (1 \leq i \leq M) は頂点 A_i と頂点 B_i を双方向に結んでいます。

このグラフが二部グラフであれば Yes を、二部グラフでなければ No を出力してください。

制約

  • 1 \leq N, M \leq 200\,000
  • 1 \leq A_i < B_i \leq N (1 \leq i \leq M)
  • 入力はすべて整数

入力

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

N M
A_1 B_1
\vdots
A_M B_M

出力

与えられたグラフが二部グラフであれば Yes を、二部グラフでなければ No を出力してください。


入力例 1

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

出力例 1

Yes

入力例 2

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

出力例 2

No
048 - Small Multiple

Time Limit: 2 sec / Memory Limit: 256 MB

配点 : 700

問題文

K の正の倍数の 10 進法での各桁の和としてありうる最小の値を求めてください。

制約

  • 2 \leq K \leq 10^5
  • K は整数である

入力

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

K

出力

K の倍数の 10 進法での各桁の和としてありうる最小の値を出力せよ。


入力例 1

6

出力例 1

3

12=6×2 が最小値を達成します。


入力例 2

41

出力例 2

5

11111=41×271 が最小値を達成します。


入力例 3

79992

出力例 3

36

Score : 700 points

Problem Statement

Find the smallest possible sum of the digits in the decimal notation of a positive multiple of K.

Constraints

  • 2 \leq K \leq 10^5
  • K is an integer.

Input

Input is given from Standard Input in the following format:

K

Output

Print the smallest possible sum of the digits in the decimal notation of a positive multiple of K.


Sample Input 1

6

Sample Output 1

3

12=6×2 yields the smallest sum.


Sample Input 2

41

Sample Output 2

5

11111=41×271 yields the smallest sum.


Sample Input 3

79992

Sample Output 3

36
049 - Fibonacci Easy (mod 1000000007)

Time Limit: 10 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

以下の漸化式で定められるフィボナッチ数列の第 Na_N1000000007 (=10^9+7) で割った余りを求めてください。

  • a_1 = 1, a_2 = 1
  • a_n = a_{n-1} + a_{n-2} (n \geq 3)

制約

  • 3 \le N \le 10^7
  • N は整数

入力

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

N

出力

答えを整数で出力してください。


入力例 1

6

出力例 1

8

a=(1,1,2,3,5,8,\dots) です。
N=6 なので、第 6 項 である 8 を出力してください。


入力例 2

8691200

出力例 2

922041576

1000000007 で割った余りを求めることに注意してください。

050 - Power

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

a^b1000000007 (=10^9+7) で割った余りを計算してください。

制約

  • 1 \le a \le 100
  • 1 \le b \le 10^9
  • 入力はすべて整数

入力

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

a b

出力

答えを整数として出力してください。


入力例 1

5 23

出力例 1

871631629

5^{23}=11920928955078125 ですが、これを 10^9+7 で割った余りである 871631629 を出力してください。


入力例 2

97 998244353

出力例 2

934801994

b の値は大きくなることがあります。


Source Name

AOJ NTL_ 1 _B - Power
051 - Combination Hard

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

無限に大きいマス目があり、各マスは 2 つの整数を用いてマス (a, b) という形で表されます。すべてのマス (a, b) に対して、右隣のマスは (a+1, b) であり、真上のマスは (a, b+1) です。

マス (0, 0) から出発し、上か右に隣り合うマスへの移動を繰り返すことでマス (X, Y) にたどり着く方法は何通りありますか。答えを 1000000007(素数)で割った余りを求めてください。

制約

  • 1 \le X,Y \le 10^5
  • 入力はすべて整数

入力

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

X Y

出力

答えを出力してください。


入力例 1

1 2

出力例 1

3

(0,0) から (1,2) にたどり着く方法は、以下の 3 通りです。

  • (0,0) \rightarrow (0,1) \rightarrow (0,2) \rightarrow (1,2)
  • (0,0) \rightarrow (0,1) \rightarrow (1,1) \rightarrow (1,2)
  • (0,0) \rightarrow (1,0) \rightarrow (1,1) \rightarrow (1,2)

入力例 2

869 120

出力例 2

445891023

1000000007 (=10^9+7) で割った余りを求めることに注意してください。

052 - Knight

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 400

問題文

二次元グリッドの原点 (0,0) にチェスのナイトの駒があります。

ナイトの駒はマス (i,j) にあるとき (i+1,j+2)(i+2, j+1) のどちらかのマスにのみ動かすことができます。

ナイトの駒をマス (X,Y) まで移動させる方法は何通りありますか?

10^9+7 で割った余りを求めてください。

制約

  • 1 \leq X \leq 10^6
  • 1 \leq Y \leq 10^6
  • 入力中のすべての値は整数である。

入力

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

X Y

出力

ナイトの駒を (0,0) から (X,Y) まで移動させる方法の数を、10^9+7 で割った余りを出力せよ。


入力例 1

3 3

出力例 1

2

(0,0) \to (1,2) \to (3,3)(0,0) \to (2,1) \to (3,3)2 通りが考えられます。


入力例 2

2 2

出力例 2

0

(2,2) にナイトの駒を移動させることはできません。


入力例 3

999999 999999

出力例 3

151840682

方法の数を 10^9+7 で割った余りを出力してください。

Score : 400 points

Problem Statement

There is a knight - the chess piece - at the origin (0, 0) of a two-dimensional grid.

When the knight is at the square (i, j), it can be moved to either (i+1,j+2) or (i+2, j+1).

In how many ways can the knight reach the square (X, Y)?

Find the number of ways modulo 10^9 + 7.

Constraints

  • 1 \leq X \leq 10^6
  • 1 \leq Y \leq 10^6
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

X Y

Output

Print the number of ways for the knight to reach (X, Y) from (0, 0), modulo 10^9 + 7.


Sample Input 1

3 3

Sample Output 1

2

There are two ways: (0,0) \to (1,2) \to (3,3) and (0,0) \to (2,1) \to (3,3).


Sample Input 2

2 2

Sample Output 2

0

The knight cannot reach (2,2).


Sample Input 3

999999 999999

Sample Output 3

151840682

Print the number of ways modulo 10^9 + 7.

053 - Sum of 4^N

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

正の整数 N が与えられるので、4^0 + 4^1 + \dots + 4^N1\,000\,000\,007 で割った余りを出力してください。

制約

  • 1 \leq N \leq 10^{18}
  • N は整数

入力

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

N

出力

4^0 + 4^1 + \dots + 4^N1\,000\,000\,007 で割った余りを出力してください。


入力例 1

3

出力例 1

85

4^0 + 4^1 + 4^2 + 4^3 = 1 + 4 + 16 + 64 = 85 なので、85 を出力します。


入力例 2

45

出力例 2

414031736

4^0 + 4^1 + \dots + 4^{45} = 1650586719047173699865498965 なので、16505867190471736998654989651\,000\,000\,007 で割った余り 414031736 を出力します。

054 - Fibonacci Hard (mod 1000000000)

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

以下の漸化式で定められるフィボナッチ数列の第 Na_N10^9 で割った余りを出力してください。

  • a_1 = 1, a_2 = 1
  • a_n = a_{n-1} + a_{n-2} (n \geq 3)

なお、書籍の問題文中では「下 9 桁」となっていますが、桁のはじめのゼロは取って出力してください。例えば a_N = 1012345678 の場合、012345678 ではなく 12345678 という出力が正解となります。

制約

  • 3 \le N \le 10^{18}
  • N は整数

入力

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

N

出力

答えを出力してください。


入力例 1

10

出力例 1

55

フィボナッチ数列は a=(1,1,2,3,5,8,13,21,34,55,\dots) であり、第 10 項は 55 です。


入力例 2

876543210987654321

出力例 2

942619746

10^9 で割った余りを求めることに注意してください。

055 - Recurrence Formula 1

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

以下の漸化式で定められる数列の第 Na_N1000000007(=10^9+7) で割った余りを求めてください。

  • a_1 = 1, a_2 = 1
  • a_n = 2a_{n-1} + a_{n-2} (n \ge 3)

制約

  • 3 \le N \le 10^{18}
  • N は整数

入力

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

N

出力

答えを出力してください。


入力例 1

10

出力例 1

1393

a=(1, 1, 3, 7, 17, 41, 99, 239, 577, 1393, ...) であり、第 10 項は 1393 です。


入力例 2

876543210987654321

出力例 2

841102483

10^9+7 で割った余りを求めることに注意してください。

056 - Recurrence Formula 2

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

以下の漸化式で定められる数列の第 Na_N1000000007 (=10^9+7) で割った余りを求めてください。

  • a_1 = 1, a_2 = 1, a_3 = 2
  • a_n = a_{n-1} + a_{n-2} + a_{n-3} (n \ge 4)

なお、このような数列 (a_1, a_2, a_3, \cdots) をトリボナッチ数列といいます。

制約

  • 4 \le N \le 10^{18}
  • N は整数

入力

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

N

出力

答えを出力してください。


入力例 1

10

出力例 1

149

a=(1, 1, 2, 4, 7, 13, 24, 44, 81, 149) であり、第 10 項は 149 です。


入力例 2

876543210987654321

出力例 2

639479200

10^9+7 で割った余りを求めることに注意してください。

057 - Domino Tiling

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

K \times N の長方形のマス目を、1 \times 2 または 2 \times 1 の長方形のタイルで完全に敷き詰める方法の数を 1000000007 (=10^9+7) で割った余りを求めてください。ただし、以下の条件を満たす敷き詰め方を正しい敷き詰めであるとします。

  • タイルはマス目からはみ出してはならず、また異なるタイル同士が重なってはならない。
  • 全てのタイルは、マス目のちょうど 2 マスを完全に覆う。

また、回転や裏返しによって一致する敷き詰め方も、異なるものとして数えます。

制約

  • 2 \le K \le 4
  • 5 \le N \le 10^{18}
  • 入力はすべて整数

入力

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

K N

出力

答えを出力してください。

部分点

この問題では、初期得点を 0 点として、以下の条件で得点が加算されます。

  • K=2 を満たすケース全てに正答した場合、 2 点が加算される。
  • K=3 を満たすケース全てに正答した場合、 30 点が加算される。
  • K=4 を満たすケース全てに正答した場合、 400 点が加算される。
  • 全てのケースに正答した場合、 568 点が加算される。
    • これにより、最終的な満点は 1000 点となる。

入力例 1

2 6

出力例 1

13

入力例 2

3 8

出力例 2

153

入力例 3

4 7

出力例 3

781
058 - Move on Squares 1

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

下記のような無限に広がるマス目に、一つのコマが置かれています。あなたはこれから、「駒を上下左右に隣り合うマスに動かすという操作を ちょうど N 行わなければなりません。

最初にコマが置かれたマスから右に a 個分動かした後、上に b 個分動かした場所をマス (a,b) とするとき、駒を最終的にマス (X,Y) に移動させることが可能か判定してください。

制約

  • 1 \leq N \leq 10^9
  • -10^9 \leq X \leq 10^9
  • -10^9 \leq Y \leq 10^9
  • 入力はすべて整数

入力

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

N X Y

出力

マス (X,Y) にたどり着けるなら Yes、そうでないならば No を出力してください。


入力例 1

10 2 2

出力例 1

Yes

下図のような経路でコマを動かせば目的を達成できるため、答えは Yes です。


入力例 2

9 3 1

出力例 2

No

どのようにしても目的を達成できないことが証明できるため、答えは No です。

059 - Power of Two

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

2^N の一の位を求めてください。

制約

  • 1 \leq N \leq 10^{12}
  • N は整数

入力

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

N

出力

答えを出力してください。


入力例 1

10

出力例 1

4

2^{10}=1024 なので、一の位は 4 です。

060 - Stones Game 1

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 個の石があり、プレイヤー 2 人が交互に石を取り合います。

各ターンでは 1 個以上 3 個以下の石を取る必要があり、初めて石を取れなくなった方が負けです。

整数 N が与えられるので、両者が最善を尽くしたとき、どちらが勝つかを求めてください。

制約

  • 1 \leq N \leq 10^{12}
  • N は整数

入力

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

N

出力

先手必勝の場合 First、後手必勝の場合 Second と出力してください。


入力例 1

4

出力例 1

Second

先手が石を 1 個取った場合は後手は 3 個、先手が 2 個取った場合は後手は 2 個、先手が 3 個取った場合は後手は 1 個取れば勝てるため、N=4 の場合は後手必勝です。

061 - Stones Game 2

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N個の石があります。各ターンでは、今残っている石の数をa個とするとき、1個以上a/2個以下の石を取らなければなりません。また、初めて石を取れなくなったほうが負けです。両者が最善を尽くした時、先手と後手どちらが勝つかを求めるプログラムを作成してください。

制約

  • 1 \leq N \leq 10^{18}

ただしsmallと名がつくテストケースについては、追加で以下の制約を満たします。

  • 1 \leq N \leq 10^5

入力

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

N

出力

先手が勝つならばFirst、後手が勝つならばSecondと出力してください。


入力例 1

2

出力例 1

First

先手は必ず 1 個の石を取ります。

後手は石をこれ以上取ることができないため、先手が勝ちます。


入力例 2

3

出力例 2

Second

入力例 3

1000000000000000000

出力例 3

First
062 - Teleporter

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 400

問題文

高橋王国には N 個の町があります。町は 1 から N まで番号が振られています。

それぞれの町にはテレポーターが 1 台ずつ設置されています。町 i (1 \leq i \leq N) のテレポーターの転送先は町 A_i です。

高橋王は正の整数 K が好きです。わがままな高橋王は、町 1 から出発してテレポーターをちょうど K 回使うと、どの町に到着するかが知りたいです。

高橋王のために、これを求めるプログラムを作成してください。

制約

  • 2 \leq N \leq 2 \times 10^5
  • 1 \leq A_i \leq N
  • 1 \leq K \leq 10^{18}

入力

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

N K
A_1 A_2 \dots A_N

出力

1 から出発してテレポーターをちょうど K 回使ったとき到着する町の番号を出力せよ。


入力例 1

4 5
3 2 4 1

出力例 1

4

1 から出発してテレポーターを 5 回使うと、1 \to 3 \to 4 \to 1 \to 3 \to 4 と移動します。


入力例 2

6 727202214173249351
6 5 2 5 3 2

出力例 2

2

Score: 400 points

Problem Statement

The Kingdom of Takahashi has N towns, numbered 1 through N.

There is one teleporter in each town. The teleporter in Town i (1 \leq i \leq N) sends you to Town A_i.

Takahashi, the king, loves the positive integer K. The selfish king wonders what town he will be in if he starts at Town 1 and uses a teleporter exactly K times from there.

Help the king by writing a program that answers this question.

Constraints

  • 2 \leq N \leq 2 \times 10^5
  • 1 \leq A_i \leq N
  • 1 \leq K \leq 10^{18}

Input

Input is given from Standard Input in the following format:

N K
A_1 A_2 \dots A_N

Output

Print the integer representing the town the king will be in if he starts at Town 1 and uses a teleporter exactly K times from there.


Sample Input 1

4 5
3 2 4 1

Sample Output 1

4

If we start at Town 1 and use the teleporter 5 times, our travel will be as follows: 1 \to 3 \to 4 \to 1 \to 3 \to 4.


Sample Input 2

6 727202214173249351
6 5 2 5 3 2

Sample Output 2

2
063 - Move on Squares 2

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N \times N のマス目があります。

左上のマスから出発し、上下左右に隣り合うマスに移動することを繰り返しながら出発地点に戻る経路のうち、すべてのマスを(最初と最後を除き)ちょうど一回ずつ 通るものが存在するか、判定してください。

制約

  • 2 \leq N \leq 10^{9}
  • N は整数

入力

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

N

出力

条件を満たすものが存在するならば Yes、存在しないならば No を出力してください。


入力例 1

2

出力例 1

Yes

上から i 番目、左から j 番目のマスを (i,j) と表す時、以下のように移動すれば条件を満たすため、Yes と出力すれば正解となります。

  • (1, 1) \to (1, 2) \to (2, 1) \to (2, 2) \to (1, 1)

入力例 2

3

出力例 2

No

N=3 の場合は条件を満たす経路が存在しないため、No と出力すれば正解となります。

064 - All Zero

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

長さ N の数列 A=(A_1,A_2,\dots,A_N) が与えられます。あなたは数列に対して、以下の操作を ちょうど K 回行います。

  • 1 以上 N 以下の整数 x を選び、A_x+1 または -1 を加算する。

数列の要素を全てゼロにすることができるか、すなわち (A_1,A_2,\dots,A_N) = (0,0,\dots,0) にできるか判定してください。

制約

  • 1 \leq N \leq 50
  • 1 \leq K \leq 50
  • 0 \leq A_i \leq 50
  • 入力はすべて整数

入力

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

N K
A_1 A_2 \cdots A_N

出力

数列の要素を全てゼロにできるならば Yes、そうでないならば No を出力してください。


入力例 1

3 3
2 0 1

出力例 1

Yes

例えば、以下のように操作すると目的を達成できます。よって Yes を出力すると正解です。

  • A_1-1 を加算する。
  • A_3-1 を加算する。
  • A_1-1 を加算する。

入力例 2

5 2
1 0 0 0 0

出力例 2

No

どのようにしても全ての要素を 0 にすることはできません。ここで、ちょうど K 回操作するということに注意してください。

065 - Bishop

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 200

問題文

H マス、横 W マスの盤面があります。 この盤面の左上隅のマスに角行の駒が置かれています。 駒が 0 回以上の好きな回数の移動を繰り返して到達できるマス目は何個あるでしょうか?

ただし、角行の駒は斜めに動くものとします。 より厳密には、駒が上から r_1 番目、左から c_1 番目のマスから上から r_2 番目、左から c_2 番目のマス目に動ける条件は

  • r_1 + c_1 = r_2 + c_2
  • r_1 - c_1 = r_2 - c_2

のうちちょうど一方が成立することです。たとえば、駒が図の位置にあるとき、一回で移動できる場所は赤くなっているマスです。

制約

  • 1 \leq H, W \leq 10^9
  • 入力は全て整数である。

入力

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

H \ W

出力

駒が到達できるマス目の個数を出力せよ。


入力例 1

4 5

出力例 1

10

下図の水色のマスに到達可能です。


入力例 2

7 3

出力例 2

11

下図の水色のマスに到達可能です。


入力例 3

1000000000 1000000000

出力例 3

500000000000000000

Score : 200 points

Problem Statement

We have a board with H horizontal rows and W vertical columns of squares. There is a bishop at the top-left square on this board. How many squares can this bishop reach by zero or more movements?

Here the bishop can only move diagonally. More formally, the bishop can move from the square at the r_1-th row (from the top) and the c_1-th column (from the left) to the square at the r_2-th row and the c_2-th column if and only if exactly one of the following holds:

  • r_1 + c_1 = r_2 + c_2
  • r_1 - c_1 = r_2 - c_2

For example, in the following figure, the bishop can move to any of the red squares in one move:

Constraints

  • 1 \leq H, W \leq 10^9
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

H \ W

Output

Print the number of squares the bishop can reach.


Sample Input 1

4 5

Sample Output 1

10

The bishop can reach the cyan squares in the following figure:


Sample Input 2

7 3

Sample Output 2

11

The bishop can reach the cyan squares in the following figure:


Sample Input 3

1000000000 1000000000

Sample Output 3

500000000000000000
066 - Three Cards

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

黒色・白色・灰色のカードが 1 枚ずつあります。

以下の条件のうち一つ以上を満たすように、各カードに 1 以上 N 以下の整数を書き込む方法が何通りあるかを求めてください。

  • 黒色と白色のカードに書かれている整数の差の絶対値は K 以上
  • 黒色と灰色のカードに書かれている整数の差の絶対値は K 以上
  • 灰色と白色のカードに書かれている整数の差の絶対値は K 以上

制約

  • 1 \leq N \leq 100000
  • 1 \leq K \leq \min(5,N-1)
  • 入力はすべて整数

入力

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

N K

出力

答えを出力してください。


入力例 1

3 1

出力例 1

24

例えば、黒色・白色・灰色のカードにそれぞれ 2, 3, 2 を書いた場合、条件のうち一つ以上を満たします。

また、黒色・白色・灰色のカードにそれぞれ 1, 1, 1 を書いた場合、すべての条件を満たしません。

067 - Cross Sum(★2)

Time Limit: 5 sec / Memory Limit: 1024 MB

配点: 2

問題文

HW 列のマス目があります。上から i\ (1 \leq i \leq H) 行目、左から j\ (1 \leq j \leq W) 列目にあるマス (i, j) には、整数 A_{i, j} が書かれています。 すべてのマス (i, j)\ (1 \leq i \leq H, 1 \leq j \leq W) について、以下の値を求めてください。

  • マス (i, j) と同じ行または同じ列にあるマス(自分自身を含む)に書かれている整数をすべて合計した値

制約

  • 2 \leq H, W \leq 2000
  • 1 \leq A_{i, j} \leq 99
  • 入力は全て整数

入力

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

H W
A_{1, 1} A_{1, 2} \cdots A_{1, W}
A_{2, 1} A_{2, 2} \cdots A_{2, W}
\vdots
A_{H, 1} A_{H, 2} \cdots A_{H, W}

出力

マス (i, j) と同じ行または同じ列にあるマス(自分自身を含む)に書かれている整数をすべて合計した値を B_{i, j} として、以下の形式で出力してください。

B_{1, 1} B_{1, 2} \cdots B_{1, W}
B_{2, 1} B_{2, 2} \cdots B_{2, W}
\vdots
B_{H, 1} B_{H, 2} \cdots B_{H, W}

入力例 1

3 3
1 1 1
1 1 1
1 1 1

出力例 1

5 5 5
5 5 5
5 5 5

入力例 2

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

出力例 2

28 28 25 26
39 33 40 34
38 38 36 31
41 41 39 43

マス (1, 1) と同じ行または同じ列にあるマスに書かれている整数の合計は次の通りです。

  • 3+1+4+1+5+5+9=28

入力例 3

2 10
31 41 59 26 53 58 97 93 23 84
62 64 33 83 27 95 2 88 41 97

出力例 3

627 629 598 648 592 660 567 653 606 662
623 633 651 618 645 650 689 685 615 676

入力例 4

10 10
83 86 77 65 93 85 86 92 99 71
62 77 90 59 63 76 90 76 72 86
61 68 67 79 82 80 62 73 67 85
79 52 72 58 69 67 93 56 61 92
79 73 71 69 84 87 98 74 65 70
63 76 91 80 56 73 62 70 96 81
55 75 84 77 86 55 96 79 63 57
74 95 82 95 64 67 84 64 93 50
87 58 76 78 88 84 53 51 54 99
82 60 76 68 89 62 76 86 94 89

出力例 4

1479 1471 1546 1500 1518 1488 1551 1466 1502 1546
1414 1394 1447 1420 1462 1411 1461 1396 1443 1445
1388 1376 1443 1373 1416 1380 1462 1372 1421 1419
1345 1367 1413 1369 1404 1368 1406 1364 1402 1387
1416 1417 1485 1429 1460 1419 1472 1417 1469 1480
1410 1392 1443 1396 1466 1411 1486 1399 1416 1447
1397 1372 1429 1378 1415 1408 1431 1369 1428 1450
1419 1393 1472 1401 1478 1437 1484 1425 1439 1498
1366 1390 1438 1378 1414 1380 1475 1398 1438 1409
1425 1442 1492 1442 1467 1456 1506 1417 1452 1473

Source Name

「競プロ典型90問」4日目
068 - Number of Multiples 2

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

1 以上 N 以下の整数の中で、V_1, V_2, \dots, V_K のいずれかの倍数であるものの個数を出力するプログラムを作成してください。

制約

  • 1 \leq N \leq 10^{12}
  • 1 \leq K \leq 10
  • 1 \leq V_i \leq 50
  • 入力はすべて整数

入力

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

N K
V_1 V_2 \cdots V_K

出力

答えを出力してください。


入力例 1

100 3
2 3 5

出力例 1

74

入力例 2

100 3
2 4 6

出力例 2

50

入力例 3

10000000000000 10
13 17 19 23 29 31 37 41 43 47

出力例 3

3324865541894
069 - Product Max

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 200

問題文

整数 a,b,c,d が与えられます。 a \leq x \leq b, c\leq y \leq d を満たす整数 x,y について、x \times y の最大値はいくつですか。

制約

  • -10^9 \leq a \leq b \leq 10^9
  • -10^9 \leq c \leq d \leq 10^9
  • 入力はすべて整数

入力

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

a b c d

出力

答えを出力せよ。


入力例 1

1 2 1 1

出力例 1

2

x=1,y=1 のとき x \times y=1x=2,y=1 のとき x \times y=2 であるため、答えは 2 です。


入力例 2

3 5 -4 -2

出力例 2

-6

答えが負になることもあります。


入力例 3

-1000000000 0 -1000000000 0

出力例 3

1000000000000000000

Score : 200 points

Problem Statement

Given are integers a,b,c and d. If x and y are integers and a \leq x \leq b and c\leq y \leq d hold, what is the maximum possible value of x \times y?

Constraints

  • -10^9 \leq a \leq b \leq 10^9
  • -10^9 \leq c \leq d \leq 10^9
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

a b c d

Output

Print the answer.


Sample Input 1

1 2 1 1

Sample Output 1

2

If x = 1 and y = 1 then x \times y = 1. If x = 2 and y = 1 then x \times y = 2. Therefore, the answer is 2.


Sample Input 2

3 5 -4 -2

Sample Output 2

-6

The answer can be negative.


Sample Input 3

-1000000000 0 -1000000000 0

Sample Output 3

1000000000000000000
070 - Axis-Parallel Rectangle

Time Limit: 2 sec / Memory Limit: 256 MB

配点 : 400

問題文

2次元座標上に N 個の点があります。
i(1≦i≦N) 番目の点の座標は (x_i,y_i) です。
長方形の内部に N 点のうち K 個以上の点を含みつつ、それぞれの辺がX軸かY軸に平行な長方形を考えます。
このとき、長方形の辺上の点は長方形の内部に含みます。
それらの長方形の中で、最小の面積となるような長方形の面積を求めてください。

制約

  • 2≦K≦N≦50
  • -10^9≦x_i,y_i≦10^9 (1≦i≦N)
  • x_i≠x_j (1≦i<j≦N)
  • y_i≠y_j (1≦i<j≦N)
  • 入力値はすべて整数である。(21:50 追記)

入力

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

N K  
x_1 y_1
:  
x_{N} y_{N}

出力

条件を満たす長方形の中で最小面積となるような長方形の面積を出力せよ。


入力例 1

4 4
1 4
3 3
6 2
8 1

出力例 1

21

条件を満たす最小面積となる長方形の 1 つは (1,1),(8,1),(1,4),(8,4)4 つの頂点で構成されます。
その面積は (8-1) × (4-1) = 21 であるため、21 と出力します。


入力例 2

4 2
0 0
1 1
2 2
3 3

出力例 2

1

入力例 3

4 3
-1000000000 -1000000000
1000000000 1000000000
-999999999 999999999
999999999 -999999999

出力例 3

3999999996000000001

オーバーフローに注意してください。

Score : 400 points

Problem Statement

We have N points in a two-dimensional plane.
The coordinates of the i-th point (1 \leq i \leq N) are (x_i,y_i).
Let us consider a rectangle whose sides are parallel to the coordinate axes that contains K or more of the N points in its interior.
Here, points on the sides of the rectangle are considered to be in the interior.
Find the minimum possible area of such a rectangle.

Constraints

  • 2 \leq K \leq N \leq 50
  • -10^9 \leq x_i,y_i \leq 10^9 (1 \leq i \leq N)
  • x_i≠x_j (1 \leq i<j \leq N)
  • y_i≠y_j (1 \leq i<j \leq N)
  • All input values are integers. (Added at 21:50 JST)

Input

Input is given from Standard Input in the following format:

N K  
x_1 y_1
:  
x_{N} y_{N}

Output

Print the minimum possible area of a rectangle that satisfies the condition.


Sample Input 1

4 4
1 4
3 3
6 2
8 1

Sample Output 1

21

One rectangle that satisfies the condition with the minimum possible area has the following vertices: (1,1), (8,1), (1,4) and (8,4).
Its area is (8-1) × (4-1) = 21.


Sample Input 2

4 2
0 0
1 1
2 2
3 3

Sample Output 2

1

Sample Input 3

4 3
-1000000000 -1000000000
1000000000 1000000000
-999999999 999999999
999999999 -999999999

Sample Output 3

3999999996000000001

Watch out for integer overflows.

071 - Linear Programming

Time Limit: 10 sec / Memory Limit: 1024 MB

配点: 1000

問題文

正の整数Nと正の整数の組(a_1,b_1,c_1),(a_2,b_2,c_2), ... , (a_N,b_N,c_N)が与えられます。 以下の条件式をすべて満たす実数の組(x,y)の中で、x+yの最大値を求めるプログラムを作成してください。

  • a_1 x + b_1 y \leq c_1
  • a_2 x + b_2 y \leq c_2
  • (中略)
  • a_N x + b_N y \leq c_N

制約

  • 1 \leq N \leq 500
  • 1 \leq a_i,b_i,c_i \leq 10^9
  • x+yが最大となるとき、xyは共に正の実数である

この制約は\mathcal{O}(N^3)時間で解くことを許容する制約です。


入力

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

N
a_1 b_1 c_1
a_2 b_2 c_2
.
.
a_N b_N c_N

出力

x+yの最大値を出力してください。 なお、想定解答との絶対誤差または相対誤差が 10^{−6} 以下であれば正解として扱われます。


入力例 1

2
1 3 3
3 1 3

出力例 1

1.5
072 - Max GCD 2

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 300

問題文

整数 A, B が与えられます。整数 x, yA ≤ x < y ≤ B となるように選ぶときの、\gcd(x, y) の最大値を求めてください。
なお、\gcd(x, y)xy の最大公約数を表します。

制約

  • A, B は整数
  • 1 ≤ A < B ≤ 2 \times 10^5

入力

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

A B

出力

答えを出力せよ。


入力例 1

2 4

出力例 1

2

A ≤ x < y ≤ B を満たす (x,y) の選び方は (2,3), (2,4), (3,4)3 つです。それぞれ最大公約数は 1, 2, 1 であるので、最大値は 2 です。


入力例 2

199999 200000

出力例 2

1

\gcd(199999, 200000) = 1 です。


入力例 3

101 139

出力例 3

34

Score : 300 points

Problem Statement

Given are integers A and B. Find the maximum possible value of \gcd(x, y) when we choose integers x and y so that A ≤ x < y ≤ B.
Here, \gcd(x, y) denotes the greatest common divisor of x and y.

Constraints

  • A and B are integers.
  • 1 ≤ A < B ≤ 2 \times 10^5

Input

Input is given from Standard Input in the following format:

A B

Output

Print the answer.


Sample Input 1

2 4

Sample Output 1

2

We have three ways to choose (x, y) such that A ≤ x < y ≤ B: (2,3), (2,4), (3,4), where the greatest common divisors are 1, 2, 1, respectively, so the maximum possible value is 2.


Sample Input 2

199999 200000

Sample Output 2

1

We have \gcd(199999, 200000) = 1.


Sample Input 3

101 139

Sample Output 3

34
073 - Sum of Maximum

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 個の整数 A_1, A_2, \cdots, A_N から 1 個以上を選ぶ方法は 2^N - 1 通りあります。

これらについて、「選んだ整数の最大値」をすべて足した値はいくつになりますか。答えを 1000000007 で割った余りを出力してください。

制約

  • 1 \leq N \leq 300000
  • 1 \leq A_1 < A_2 < ... < A_N \leq 10^9
  • 入力はすべて整数

入力

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

N
A_1 A_2 \cdots A_N

出力

答えを出力してください。


入力例 1

2
3 5

出力例 1

13

\{ 3 \}\{ 5 \}\{ 3, 5 \}3 通りの選び方があるため、答えは 3+5+5=13 です。

074 - Sum of difference Easy

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 個の整数 A_1,A_2,\dots,A_N があります。ここで、A_1 < A_2 < \cdots < A_N を満たします。

\displaystyle \sum_{i=1}^{N} \sum_{j=i+1}^{N} (A_j-A_i) の値を計算してください。

制約

  • 2 \leq N \leq 200000
  • 1 \leq A_1 < A_2 < \cdots < A_N \leq 10^6
  • 入力はすべて整数

入力

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

N
A_1 A_2 \cdots A_N

出力

答えを出力してください。


入力例 1

3
1 3 5

出力例 1

8

(A_2-A_1)+(A_3-A_1)+(A_3-A_2) = 2+4+2 = 8 であるため、8 と出力すれば正解です。

075 - Pyramid

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

下図のような N 段のピラミッドがあり、最下段には左から順に整数 A_1, A_2, \dots, A_N が書かれています。

下の段から順に、「隣り合った 2 つの数を足した答えを上の段に書く」という操作を行ったとき、一番上に書かれる整数はいくつですか。

答えを 1000000007 (=10^9+7) で割った余りを出力してください。

制約

  • 2 \leq N \leq 200000
  • 1 \leq A_i \leq 10^9
  • 入力はすべて整数

入力

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

N
A_1 A_2 \dots A_N

出力

一番上に書かれる整数を 1000000007 (=10^9+7) で割った余りを出力してください。


入力例 1

5
20 22 25 43 50

出力例 1

480

ピラミッドには以下のように整数が書かれます。よって、480 と出力すれば正解です。

076 - Sum of difference

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 400

問題文

N 個の整数 A_1,\ldots,A_N が与えられます。

1\leq i < j \leq N を満たす全ての i,j の組についての |A_i-A_j| の和を求めてください。

すなわち、\displaystyle{\sum_{i=1}^{N-1}\sum_{j=i+1}^{N} |A_i-A_j|} を求めてください。

制約

  • 2 \leq N \leq 2 \times 10^5
  • |A_i|\leq 10^8
  • A_i は整数である。

入力

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

N
A_1 \ldots A_N

出力

答えを出力せよ。


入力例 1

3
5 1 2

出力例 1

8

|5-1|+|5-2|+|1-2|=8 です。


入力例 2

5
31 41 59 26 53

出力例 2

176

Score : 400 points

Problem Statement

Given are N integers A_1,\ldots,A_N.

Find the sum of |A_i-A_j| over all pairs i,j such that 1\leq i < j \leq N.

In other words, find \displaystyle{\sum_{i=1}^{N-1}\sum_{j=i+1}^{N} |A_i-A_j|}.

Constraints

  • 2 \leq N \leq 2 \times 10^5
  • |A_i|\leq 10^8
  • A_i is an integer.

Input

Input is given from Standard Input in the following format:

N
A_1 \ldots A_N

Output

Print the answer.


Sample Input 1

3
5 1 2

Sample Output 1

8

We have |5-1|+|5-2|+|1-2|=8.


Sample Input 2

5
31 41 59 26 53

Sample Output 2

176
077 - Distance Sum

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

2 次元座標上にN個の点があります。i番目の点の座標は(X_i, Y_i)です。\mathcal{dist} (i, j)i番目の点とj番目の点の間のマンハッタン距離とするとき、次式の値を求めるプログラムを作成してください。ただし、座標(x_1 , y_1)と座標(x_2,y_2)の間のマンハッタン距離は|x_1 − x_2| + |y_1 − y_2|で定義されます。

\sum_{i=1}^{N} \sum_{j=i+1}^{N} \mathcal{dist} (i,j)

制約

  • 2 \leq N \leq 200000
  • -10^5 \leq X_i , Y_i \leq 10^5
  • X_i,Y_iは整数

入力

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

N
X_1 Y_1
X_2 Y_2
:
X_N Y_N

出力

式の値を出力してください。


入力例 1

2
1 2
10 20

出力例 1

27
078 - Difference Optimization 1

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

注意

書籍の版によっては、書籍内の制約が正しくない場合があります。正誤表を参照してください。

書籍内の制約の訂正点 誤:1 \le A_i < B_i \le M
正:1 \le A_i < B_i \le N

問題文

ALGO 家は N 人家族であり、各人には 1 から N までの番号が振られています。あなたは人 1 の年齢が 0 歳であり、その他の人の年齢も 0 以上 120 以下の整数であることを知っています。また、以下の M 個の条件を満たすことが分かっています。

  • A_1 と人 B_1 の年齢は 0 歳差または 1 歳差である。
  • A_2 と人 B_2 の年齢は 0 歳差または 1 歳差である。
  • :
  • A_M と人 B_M の年齢は 0 歳差または 1 歳差である。

1,2,3,\dots,N の年齢として考えられる最大値を出力してください。

制約

  • 2 \leq N \leq 100000
  • 1 \leq M \leq 500000
  • 1 \leq A_i < B_i \leq N
  • 入力はすべて整数

入力

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

N M
A_1 B_1
A_2 B_2
:
A_M B_M

出力

N 行出力してください。

i 行目 (1 \leq i \leq N) には、人 i の年齢として考えられる最大値を出力してください。


入力例 1

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

出力例 1

0
1
1
2
2
3
079 - ModSum

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 400

問題文

整数 N に対して、\{1, 2, ..., N\} を並べ替えた数列 \{P_1, P_2, ..., P_N\} を選びます。

そして、各 i=1,2,...,N について、iP_i で割った余りを M_i とします。

M_1 + M_2 + \cdots + M_N の最大値を求めてください。

制約

  • N1 \leq N \leq 10^9 を満たす整数である。

入力

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

N

出力

M_1 + M_2 + \cdots + M_N の最大値を出力せよ。


入力例 1

2

出力例 1

1

\{1, 2\} を並び替えた数列として \{P_1, P_2\} = \{2, 1\} を選ぶと、M_1 + M_2 = 1 + 0 = 1 となります。


入力例 2

13

出力例 2

78

入力例 3

1

出力例 3

0

Score : 400 points

Problem Statement

For an integer N, we will choose a permutation \{P_1, P_2, ..., P_N\} of \{1, 2, ..., N\}.

Then, for each i=1,2,...,N, let M_i be the remainder when i is divided by P_i.

Find the maximum possible value of M_1 + M_2 + \cdots + M_N.

Constraints

  • N is an integer satisfying 1 \leq N \leq 10^9.

Input

Input is given from Standard Input in the following format:

N

Output

Print the maximum possible value of M_1 + M_2 + \cdots + M_N.


Sample Input 1

2

Sample Output 1

1

When the permutation \{P_1, P_2\} = \{2, 1\} is chosen, M_1 + M_2 = 1 + 0 = 1.


Sample Input 2

13

Sample Output 2

78

Sample Input 3

1

Sample Output 3

0
080 - Difference Optimization 2

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

整数 x_1,x_2,\dots,x_N は以下の条件をすべて満たします。

  • x_1=0 である。
  • 1 \le i \le M について、|x_{A_i}-x_{B_i}| \le C_i を満たす。

x_N の値として考えられる最大値を求めるプログラムを作成してください。

制約

  • 2 \leq N \leq 100000
  • 0 \leq M \leq 500000
  • 1 \leq A_i < B_i \leq N
  • 0 \leq C_i \leq 10^9
  • 入力はすべて整数

入力

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

N M
A_1 B_1 C_1
A_2 B_2 C_2
:
A_M B_M C_M

出力

x_N をいくらでも大きくできる場合は、-1 を出力してください。

そうでない場合は、x_N の最大値を出力してください。


入力例 1

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

出力例 1

5

x_1=0,x_2=3,x_3=4,x_4=5 の場合、x_4 は最大値 5 となります。


入力例 2

2 0

出力例 2

-1

x_2 はいくらでも大きくできるため、-1 を出力します。

081 - Bill Changing Problem

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

1000 円札、5000 円札、10000 円札を使って N 円を支払いたいです。最小何枚で支払うことが出来るか求めてください。

ただし、紙幣はどれも十分にあるものとします。

制約

  • 1000 \le N \le 200000
  • N1000 の倍数

入力

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

N

出力

N 円払うための最小の枚数を出力してください。


入力例 1

29000

出力例 1

7

10000 円札 2 枚、5000 円札 1 枚、1000 円札 4 枚を使うと、7 枚の紙幣で支払うことができます。

082 - Interval Scheduling Problem

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

今日は N 本の映画が上映されます。i 番目の映画は時刻 L_i に開始し、時刻 R_i に終了します。

最大いくつの映画を最初から最後まで見ることができますか。

ただし、映画を見終わった直後に次の映画を見始めることはできますが、同時に複数の映画を見ることはできないものとします。

制約

  • 1 \le N \le 300000
  • 0 \le L_i < R_i \le 86400
  • 入力はすべて整数

部分点

  • N \leq 2000 を満たすケースで正解すると、500 点が得られます。

入力

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

N
L_1 R_1
L_2 R_2
\vdots
L_N R_N

出力

最大いくつの映画を最初から最後まで見ることができるか出力してください。


入力例 1

3
123 86399
1 86400
86399 86400

出力例 1

2

以下のようにすると、2 個の映画を最初から最後まで見ることができます。

  • まず、映画 1 を時刻 123 から時刻 86399 まで見る。
  • 次に、映画 3 を時刻 86399 から時刻 86400 まで見る。

3 個すべての映画を最初から最後まで見る方法はありません。

083 - We Used to Sing a Song Together(★3)

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 3

問題文

AGC 街道には N 人の小学生が住んでおり、小学生 i (1 \leq i \leq N) の家は位置 A_i にあります。
また、小学校は N 校建てられており、小学校 j (1 \leq j \leq N) は位置 B_j にあります。
AGC 街道に住む小学生は性格が悪く、どの人同士も険悪な関係になっているため、全員が別の学校に通うようにしたいです。

また、不便さは次のように定義されます。

  • 小学生 i にとっての家から学校までの距離を E_i とするとき、不便さは距離の総和、すなわち E_1 + E_2 + ... + E_N である。
  • ただし、位置 u から位置 v までの距離は |u-v|

どの生徒も別の学校に通うという条件下における、不便さとして考えられる最小値を求めてください。

制約

  • 1 \leq N \leq 100000
  • 0 \leq A_i \leq 10^9
  • 0 \leq B_j \leq 10^9
  • A_1, A_2, \dots, A_N は相異なる
  • B_1, B_2, \dots, B_N は相異なる
  • 入力はすべて整数

入力

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

N
A_1 A_2 \cdots A_N
B_1 B_2 \cdots B_N

出力

答えを出力してください。


入力例 1

1
869
120

出力例 1

749

小学生 1 の家と小学校 1 の距離は |869 - 120| = 749 です。
この入力では小学生 1 が必ず小学校 1 に通うことになるため、この値が不便さとして考えられる唯一の値であり、最小値です。


入力例 2

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

出力例 2

5

小学生 1,2,3,4,5,6 をそれぞれ小学校 3,2,6,4,5,1 に通わせることにすると、不便さは |8-7|+|6-5|+|9-9|+|1-2|+|2-3|+|0-1|=5 となります。
これ以上不便さを小さくすることはできないため、答えは 5 です。


入力例 3

10
31 41 59 26 53 58 97 93 23 84
17 32 5 8 7 56 88 77 29 35

出力例 3

211

入力例 4

20
804289382 846930886 681692776 714636914 957747792 424238335 719885386 649760491 596516649 189641420 25202361 350490026 783368690 102520058 44897761 967513925 365180539 540383425 304089172 303455735
35005211 521595368 294702567 726956428 336465782 861021530 278722862 233665123 145174065 468703135 101513928 801979801 315634021 635723058 369133068 125898166 59961392 89018454 628175011 656478041

出力例 4

2736647674

Source Name

「競プロ典型90問」14日目
084 - Sqrt Inequality

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 300

問題文

\sqrt{a} + \sqrt{b} < \sqrt{c} ですか?

制約

  • 1 \leq a, b, c \leq 10^9
  • 入力は全て整数である。

入力

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

a \ b \ c

出力

\sqrt{a} + \sqrt{b} < \sqrt{c} ならば Yes、そうでないならば No と出力せよ。


入力例 1

2 3 9

出力例 1

No

\sqrt{2} + \sqrt{3} < \sqrt{9} ではありません。


入力例 2

2 3 10

出力例 2

Yes

\sqrt{2} + \sqrt{3} < \sqrt{10} です。

Score : 300 points

Problem Statement

Does \sqrt{a} + \sqrt{b} < \sqrt{c} hold?

Constraints

  • 1 \leq a, b, c \leq 10^9
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

a \ b \ c

Output

If \sqrt{a} + \sqrt{b} < \sqrt{c}, print Yes; otherwise, print No.


Sample Input 1

2 3 9

Sample Output 1

No

\sqrt{2} + \sqrt{3} < \sqrt{9} does not hold.


Sample Input 2

2 3 10

Sample Output 2

Yes

\sqrt{2} + \sqrt{3} < \sqrt{10} holds.

085 - Two Conditions

Time Limit: 5 sec / Memory Limit: 1024 MB

配点: 1000

問題文

1 以上 N 以下の整数の組 (a,b,c,d) であって、以下の条件両方を満たすものが存在するか、判定してください。

  • a + b + c + d = X
  • abcd = Y

制約

  • 1 \le N \le 300
  • 1 \le X \le 10^9
  • 1 \le Y \le 10^9
  • 入力はすべて整数

入力

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

N X Y

出力

条件を満たす整数の組 (a,b,c,d) が存在するなら Yes、そうでないならば No を出力してください。


入力例 1

6 11 30

出力例 1

Yes

例えば、(a, b, c, d) = (3, 2, 5, 1) が条件を満たします。


入力例 2

1 1000000000 1

出力例 2

No

条件を満たす整数の組 (a, b, c, d) は存在しません。

086 - Parentheses Check

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

長さ N(,) からなるカッコ列 S が与えられるので、S が正しいカッコ列であるかどうかを判定してください。

ただし、正しいカッコ列とは次のうちいずれかの条件を満たすものを指します。

  • 空文字列
  • 空文字列でない正しいカッコ列 A,B が存在し、A, B をこの順に連結した文字列
  • ある正しいカッコ列 A が存在し、(,A,) をこの順に連結した文字列

たとえば、(()())() は正しいカッコ列ですが、))()(( は正しいカッコ列ではありません。

制約

  • N1 以上 500000 以下の整数
  • S() からなる N 文字の文字列

入力

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

N
S

出力

S が正しいカッコ列ならば Yes 、そうでないならば No を出力してください。


入力例 1

8
(()())()

出力例 1

Yes

入力例 2

6
))()((

出力例 2

No
087 - Simple Math Easy

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

整数 N が与えられます。

\displaystyle \sum_{i=1}^{N} \sum_{j=1}^{N} ij

1000000007 (=10^9+7) で割った余りを求めてください。

制約

  • 1 \le N \le 10^9
  • N は整数

入力

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

N

出力

求めた値を 1000000007 (=10^9+7) で割った余りを出力してください。


入力例 1

2

出力例 1

9

(1 \times 1 )+(1 \times 2)+(2 \times 1)+(2 \times 2)=1+2+2+4=9 なので、9 と出力すれば正解です。


入力例 2

869120

出力例 2

497335961

1000000007 (=10^9+7) で割った余りを出力してください。

088 - Simple Math

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 300

問題文

3 つの正整数 A, B, C が与えられます。

\sum_{a=1}^{A} \sum_{b=1}^{B} \sum_{c=1}^{C} abc

998244353 で割った余りを求めてください。

制約

  • 1 \leq A, B, C \leq 10^9

入力

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

A B C

出力

求めた値を 998244353 で割った余りを出力せよ。


入力例 1

1 2 3

出力例 1

18

(1 \times 1 \times 1) + (1 \times 1 \times 2) + (1 \times 1 \times 3) + (1 \times 2 \times 1) + (1 \times 2 \times 2) + (1 \times 2 \times 3) = 1 + 2 + 3 + 2 + 4 + 6 = 18 となります。


入力例 2

1000000000 987654321 123456789

出力例 2

951633476

998244353 で割った余りを求めることに注意してください。

Score : 300 points

Problem Statement

Given are three positive integers A, B, and C. Compute the following value modulo 998244353:

\sum_{a=1}^{A} \sum_{b=1}^{B} \sum_{c=1}^{C} abc

Constraints

  • 1 \leq A, B, C \leq 10^9

Input

Input is given from standard input in the following format:

A B C

Output

Print the value modulo 998244353.


Sample Input 1

1 2 3

Sample Output 1

18

We have: (1 \times 1 \times 1) + (1 \times 1 \times 2) + (1 \times 1 \times 3) + (1 \times 2 \times 1) + (1 \times 2 \times 2) + (1 \times 2 \times 3) = 1 + 2 + 3 + 2 + 4 + 6 = 18.


Sample Input 2

1000000000 987654321 123456789

Sample Output 2

951633476

Be sure to compute the value modulo 998244353.

089 - Log Inequality 2

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

\log_2 a < b \log_2 c かどうか判定してください。

なお、この問題は 競プロ典型 90 問 020 - Log Inequality と同一のものですが、制約が変更されています。

制約

  • 1 \leq a \leq 10^{18}
  • 1 \leq b \leq 10^{18}
  • 1 \leq c \leq 10^{18}
  • 入力はすべて整数

入力

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

a b c

出力

\log_2 a < b \log_2 c であれば Yes、そうでなければ No と出力してください。


入力例 1

4 3 2

出力例 1

Yes

\log_2 4 = 2 である一方、3 \log_2 2 = 3 であるため、Yes と出力すれば正解となります。


入力例 2

16 3 2

出力例 2

No

\log_2 16 = 4 である一方、3 \log_2 2 = 3 であるため、No と出力すれば正解となります。


入力例 3

8 3 2

出力例 3

No

\log_2 a = b \log_2 c の場合も No と出力することに注意してください。


入力例 4

1000000000000000000 1000000000000000000 1000000000000000000

出力例 4

Yes

非常に大きい値が入力される場合があることに注意してください。


入力例 5

869120 5 15

出力例 5

No
090 - Digit Product Equation(★7)

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 7

問題文

関数 f(x) を次のように定義します。

  • f(x)=(x の各位の数字の積)

例えば f(777)=343f(8691)=432f(869120)=0 です。

整数 NB が与えられるので、 1 以上 N 以下の整数 m の中で m-f(m) = B となるものの個数を求めてください。

制約

  • 1 \leq N \lt 10^{11}
  • 1 \leq B \lt 10^{11}
  • 入力はすべて整数

入力

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

N B

出力

答えを出力してください。


入力例 1

999 434

出力例 1

2

m=574m=7772 つが条件を満たします。


入力例 2

255 15

出力例 2

2

入力例 3

9999999999 1

出力例 3

0

Source Name

「競プロ典型90問」25日目
091 - How Many Ways?

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

整数の組 (a, b, c) であって、以下の条件をすべて満たすものの個数を求めてください。

  • 1 \leq a < b < c \leq N
  • a + b + c = X

制約

  • 3 \leq N \leq 100
  • 0 \leq X \leq 300
  • 入力はすべて整数

入力

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

N X

出力

答えを整数で出力してください。


入力例 1

5 9

出力例 1

2

(a, b, c) = (1, 3, 5), (2, 3, 4)2 通りがあります。


入力例 2

8 16

出力例 2

5

(a, b, c) = (1, 7, 8), (2, 6, 8), (3, 5, 8), (3, 6, 7), (4, 5, 7)5 通りがあります。


入力例 3

3 20

出力例 3

0

条件を満たす (a, b, c) が存在しないケースもあることに注意してください。


入力例 4

29 47

出力例 4

97

入力例 5

100 160

出力例 5

1213
092 - Beautiful Rectangle

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

縦の長さと横の長さが整数である面積 N の長方形について、周の長さの最小値を求めてください。

制約

  • 1 \leq N \leq 10^{12}
  • N は整数

入力

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

N

出力

答えを整数で出力してください。


入力例 1

10

出力例 1

14

面積が 10 の長方形として、以下の 4 つが考えられます。

  • 縦の長さが 1、横の長さが 10 の長方形(周の長さは 22
  • 縦の長さが 2、横の長さが 5 の長方形(周の長さは 14
  • 縦の長さが 5、横の長さが 2 の長方形(周の長さは 14
  • 縦の長さが 10、横の長さが 1 の長方形(周の長さは 22

周の長さの最小値は 14 であるため、14 と出力すれば正解となります。


入力例 2

9

出力例 2

12

面積が 9 の長方形として、以下の 3 つが考えられます。

  • 縦の長さが 1、横の長さが 9 の長方形(周の長さは 20
  • 縦の長さが 3、横の長さが 3 の長方形(周の長さは 12
  • 縦の長さが 9、横の長さが 1 の長方形(周の長さは 20

周の長さの最小値は 12 であるため、12 と出力すれば正解となります。


入力例 3

160

出力例 3

52

周の長さが最小となる長方形として、10 \times 16(周の長さは 52)などが考えられます。


入力例 4

869120

出力例 4

3732

周の長さが最小となる長方形として、896 \times 970(周の長さは 3732)などが考えられます。


入力例 5

2147483647

出力例 5

4294967296
093 - Large LCM(★3)

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 3

問題文

正整数 A, B が与えられます。AB の最小公倍数を求めてください。ただし、答えが 10^{18} を超える場合は Large と出力してください。

制約

  • 1 \leq A, B \leq 10^{18}
  • 入力は全て整数

入力

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

A B

出力

AB の最小公倍数を出力してください。答えが 10^{18} を超える場合は代わりに Large と出力してください。


入力例 1

4 6

出力例 1

12

46 の最小公倍数は 12 です。
答えが 10^{18} を超えないので、12 を出力してください。


入力例 2

1000000000000000000 3

出力例 2

Large

10^{18}3 の最小公倍数は 3 \times 10^{18} です。
答えが 10^{18} を超えるので、Large と出力してください。


入力例 3

1000000000000000000 1

出力例 3

1000000000000000000

答えがちょうど 10^{18} の場合、そのまま出力することに注意してください。


Source Name

「競プロ典型90問」38日目
094 - Maximal Value

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 300

問題文

長さ N の値の分からない整数列 A があります。

長さ N-1 の整数列 B が与えられます。このとき、

B_i \geq \max(A_i, A_{i+1})

が成立することが分かっています。

A の要素の総和として考えられる値の最大値を求めてください。

制約

  • 入力は全て整数
  • 2 ≤ N ≤ 100
  • 0 \leq B_i \leq 10^5

入力

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

N
B_1 B_2 ... B_{N-1}

出力

A の要素の総和として考えられる値の最大値を出力せよ。


入力例 1

3
2 5

出力例 1

9

A として、例えば A = ( 2 , 1 , 5 )や、 A = ( -1 , -2 , -3 ), A = ( 2 , 2 , 5 ) 等が考えられます。これらのうち A の要素の総和が最大となるものは、 A = ( 2 , 2 , 5 ) です。


入力例 2

2
3

出力例 2

6

入力例 3

6
0 153 10 10 23

出力例 3

53

Score : 300 points

Problem Statement

There is an integer sequence A of length N whose values are unknown.

Given is an integer sequence B of length N-1 which is known to satisfy the following:

B_i \geq \max(A_i, A_{i+1})

Find the maximum possible sum of the elements of A.

Constraints

  • All values in input are integers.
  • 2 \leq N \leq 100
  • 0 \leq B_i \leq 10^5

Input

Input is given from Standard Input in the following format:

N
B_1 B_2 ... B_{N-1}

Output

Print the maximum possible sum of the elements of A.


Sample Input 1

3
2 5

Sample Output 1

9

A can be, for example, ( 2 , 1 , 5 ), ( -1 , -2 , -3 ), or ( 2 , 2 , 5 ). Among those candidates, A = ( 2 , 2 , 5 ) has the maximum possible sum.


Sample Input 2

2
3

Sample Output 2

6

Sample Input 3

6
0 153 10 10 23

Sample Output 3

53
095 - Score Sum Queries(★2)

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 2

問題文

ABC 大学には N 人の一年生が在籍しています。クラスは 2 つあり、学籍番号 i 番の生徒のクラスは C_i 組です。今日は期末試験が返却され、学籍番号 i 番の生徒の点数は P_i 点でした。

以下の形式の質問が Q 個与えられます。j = 1, 2, \dots, Q それぞれについて答えてください。

  • 学籍番号 L_j \sim R_j 番の 1 組生徒における、期末試験点数の合計
  • 学籍番号 L_j \sim R_j 番の 2 組生徒における、期末試験点数の合計
  • これら 2 つの値をそれぞれ求めよ。

制約

  • 1 \leq N \leq 100000
  • 1 \leq C_i \leq 2
  • 0 \leq P_i \leq 100
  • 1 \leq Q \leq 100000
  • 1 \leq L_j \leq R_j \leq N
  • 入力は全て整数

入力

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

N
C_1 P_1
C_2 P_2
\vdots
C_N P_N
Q
L_1 R_1
L_2 R_2
\vdots
L_Q R_Q

出力

学籍番号 L_j \sim R_j 番の 1 組生徒における期末試験点数の合計を A_j、学籍番号 L_j \sim R_j 番の 2 組生徒における期末試験点数の合計を B_j として、以下の形式で出力してください。

A_1 B_1
A_2 B_2
\vdots
A_Q B_Q

入力例 1

7
1 72
2 78
2 94
1 23
2 89
1 40
1 75
1
2 6

出力例 1

63 261

学籍番号 2 \sim 6 番の 1 組生徒における、期末試験合計点は 23+40=63 です。
また、学籍番号 2 \sim 6 番の 2 組生徒における、期末試験合計点は 78+94+89=261 です。


入力例 2

7
1 72
2 78
2 94
1 23
2 89
1 40
1 75
10
1 3
2 4
3 5
4 6
5 7
1 5
2 6
3 7
1 6
2 7

出力例 2

72 172
23 172
23 183
63 89
115 89
95 261
63 261
138 183
135 261
138 261

入力例 3

1
1 100
3
1 1
1 1
1 1

出力例 3

100 0
100 0
100 0

一方の組の生徒が存在しないケースもあります。


入力例 4

20
2 90
1 67
2 9
2 17
2 85
2 43
2 11
1 32
2 16
1 19
2 65
1 14
1 51
2 94
1 4
1 55
2 90
1 89
1 35
2 81
20
3 17
5 5
11 11
8 10
3 13
2 6
3 7
3 5
12 18
4 8
3 16
6 8
3 20
1 12
1 6
5 16
3 10
17 19
4 4
7 15

出力例 4

175 430
0 85
0 65
51 16
116 246
67 154
0 165
0 111
213 184
32 156
175 340
32 54
299 511
132 336
67 244
175 314
51 181
124 90
0 17
120 186

Source Name

「競プロ典型90問」10日目
096 - Cooking

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 400

問題文

高橋君は料理 1 から NN 品の料理を作ろうとしています。

料理 i はオーブンを連続した T_i 分間使うことで作れます。1 つのオーブンを 2 つ以上の料理のために同時に使うことはできません。

2 つのオーブンを使えるとき、N 品の料理を全て作るまでに最短で何分かかりますか? なお、オーブンを使う時間以外は無視できるものとします。

制約

  • 1 \leq N \leq 100
  • 1 \leq T_i \leq 10^3
  • 入力に含まれる値は全て整数である

入力

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

N
T_1 \ldots T_N

出力

答えを出力せよ。


入力例 1

5
8 3 7 2 5

出力例 1

13

例えば 2 つのオーブンを次のように使うことで、13 分で全ての料理を作ることができます。

  • 1 つ目のオーブン:料理 5,1 を順に作る。
  • 2 つ目のオーブン:料理 2,4,3 を順に作る。

入力例 2

2
1000 1

出力例 2

1000

入力例 3

9
3 14 15 9 26 5 35 89 79

出力例 3

138

Score : 400 points

Problem Statement

Takahashi is going to cook N dishes called Dish 1 through N.

Dish i can be cooked by using an oven for T_i consecutive minutes. An oven cannot be used for two or more dishes simultaneously.

If Takahashi has two ovens to use, what is the shortest number of minutes needed to cook all the N dishes? Assume that all processes other than using ovens take negligible time.

Constraints

  • 1 \leq N \leq 100
  • 1 \leq T_i \leq 10^3
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
T_1 \ldots T_N

Output

Print the answer.


Sample Input 1

5
8 3 7 2 5

Sample Output 1

13

We can, for example, use the two ovens as follows to cook all the dishes in 13 minutes.

  • The first oven: Cook Dishes 5 and 1 in this order.
  • The second oven: Cook Dishes 2, 4, and 3 in this order.

Sample Input 2

2
1000 1

Sample Output 2

1000

Sample Input 3

9
3 14 15 9 26 5 35 89 79

Sample Output 3

138
097 - Primes in an Interval

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

L 以上 R 以下の素数の個数はいくつですか。

ただし、1 は素数ではない ものとします。

制約

  • 1 \leq L \leq R \leq 10^{12}
  • R - L \leq 500000
  • 入力はすべて整数

入力

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

L R

出力

答えを整数で出力してください。


入力例 1

21 40

出力例 1

4

21 以上 40 以下の素数は、232931374 個です。


入力例 2

101 130

出力例 2

6

101 以上 130 以下の素数は、1011031071091131276 個です。


入力例 3

1 100

出力例 3

25

1 以上 100 以下の素数は、全部で 25 個あります。


入力例 4

217 217

出力例 4

0

217 は素数ではありません。


入力例 5

999999500000 1000000000000

出力例 5

18228
098 - Polygon and Point

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 1000

問題文

N 個の点 P_1, P_2, \dots, P_N を頂点とする多角形があります。点 P_i の座標は (X_i, Y_i) であり、P_iP_{i+1} を結ぶ線分 (i = 1, 2, \dots, N-1) は多角形の辺です。また、P_NP_1 を結ぶ線分も多角形の辺です。

座標 (A, B) が多角形の内部に含まれているかどうかを判定するプログラムを作成してください。

制約

  • 3 \leq N \leq 100000
  • -10^9 \leqq X_i \leqq 10^9
  • -10^9 \leqq Y_i \leqq 10^9
  • -10^9 \leqq A \leqq 10^9
  • -10^9 \leqq B \leqq 10^9
  • (A, B) は多角形の辺上にはない
  • 多角形の内角がちょうど 180^{\circ} になることはない
  • 入力はすべて整数

入力

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

N
X_1 Y_1
X_2 Y_2
\vdots
X_N Y_N
A B

出力

座標 (A, B) が多角形の内部に含まれるなら INSIDE、外部に含まれるなら OUTSIDE と出力してください。

部分点

この問題では、多角形が凸多角形であるケースにすべて正解すれば、部分点として 500 点を獲得します。


入力例 1

4
0 0
3 1
2 3
0 3
2 1

出力例 1

INSIDE

多角形は以下の図のようになり、座標 (2, 1) の点はその内部に含まれます。


入力例 2

4
3 1
0 0
0 3
2 3
3 2

出力例 2

OUTSIDE

多角形は以下の図のようになり、座標 (3, 2) の点はその外部にあります。


入力例 3

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

出力例 3

INSIDE

多角形は以下の図のようになり、座標 (0, -1) の点はその内部に含まれます。


入力例 4

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

出力例 4

OUTSIDE

多角形は以下の図のようになり、座標 (4, 4) の点はその外部にあります。


入力例 5

3
0 0
1000000000 671903261
671903261 1000000000
520908341 350000013

出力例 5

OUTSIDE

この入力例では、点と多角形は非常に近く、距離 10^{-9} 程度しか離れていませんが、点は多角形の外部にあります。

099 - Tree Distance(★5)

Time Limit: 2 sec / Memory Limit: 1024 MB

配点:5

問題文

N 頂点の木が与えられます。木の頂点にはそれぞれ 1 から N までの番号が振られています。
i 番目の辺は、頂点 a_i と頂点 b_i を双方向に結んでおり、長さは全て 1 です。

  • {\displaystyle\sum_{u = 1}^{N - 1} \sum_{v = u + 1}^{N} \operatorname{dist}(u, v)}

の値を求めてください。

ただし、\operatorname{dist}(u,v) は、頂点 u から 頂点 v までの最短距離とします。

制約

  • 2 \leq N \leq 100000
  • 1 \leq a_i, b_i \leq N
  • 与えられるグラフは木である
  • 入力は全て整数で与えられる

入力

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

N
a_1 b_1
a_2 b_2
:
a_{N - 1} b_{N - 1}

出力

答えを 1 行に出力してください。


入力例 1

2
1 2

出力例 1

1

\operatorname{dist}(1, 2) = 1 であるので、答えは 1 です。


入力例 2

4
1 2
1 3
1 4

出力例 2

9
  • \operatorname{dist}(1, 2) = 1
  • \operatorname{dist}(1, 3) = 1
  • \operatorname{dist}(1, 4) = 1
  • \operatorname{dist}(2, 3) = 2
  • \operatorname{dist}(2, 4) = 2
  • \operatorname{dist}(3, 4) = 2

であるので、これらを足し合わせた 9 が答えになります。 


入力例 3

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

出力例 3

211

Source Name

「競プロ典型90問」39日目
100 - Simulation of Chemicals

Time Limit: 3 sec / Memory Limit: 1024 MB

配点: 1000

問題文

i = 1, 2, \dots, Q に対して、以下の問題を解いてください。

試験管に 3 種類の物質 A, B, C がそれぞれ a, b, c グラム入っているとき、次の 1 秒間で以下のような変化が起こります。

  • 物質 A のうち aX_i グラムが物質 C に変化する
  • 物質 B のうち bY_i グラムが物質 A に変化する
  • 物質 C のうち cZ_i グラムが物質 B に変化する

すなわち、1 秒後の物質 A, B, C の量は、それぞれ a(1-X_i) + bY_i, b(1-Y_i) + cZ_i, c(1-Z_i) + aX_i グラムになります。

最初、試験管に物質 A, B, C が 1 グラムずつ入っています。T_i 秒後の物質 A, B, C の量がそれぞれ何グラムになるかを求めるプログラムを作成してください。

制約

  • 1 \leqq Q \leqq 10^4
  • 0 \leqq X_i, Y_i, Z_i \leqq 1
  • 1 \leqq T_i \leqq 10^7
  • X, Y, Z は実数で、最大で小数点以下 7 桁まで与えられる
  • T は整数

入力

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

Q
X_1 Y_1 Z_1 T_1
X_2 Y_2 Z_2 T_2
 \vdots
X_Q Y_Q Z_Q T_Q

出力

i \ (1 \leqq i \leqq Q) 番目の問題における、T_i 秒後の物質 A, B, C の量を a'_i, b'_i, c'_i とするとき、次の形式で出力してください。

a'_1 b'_1 c'_1
a'_2 b'_2 c'_2
 \vdots
a'_Q b'_Q c'_Q

ただし、正解との絶対誤差が 10^{-7} 以下であるような答えを出力すれば、正答とみなされます。


入力例 1

5
0.10 0.20 0.30 2
0.02 0.03 0.01 3
0.50 0.00 0.00 16
0.20 0.70 0.60 12345
1.00 1.00 1.00 10000000

出力例 1

1.210000000000000 1.120000000000000 0.670000000000000
1.027637000000000 0.942080000000000 1.030283000000000
0.000015258789062 1.000000000000000 1.999984741210938
1.852941176470589 0.529411764705882 0.617647058823530
1.000000000000000 1.000000000000000 1.000000000000000

まず、1 番目の問題 (X = 0.1, Y = 0.2, Z = 0.3, T = 2) では、次のように物質の量が変化していきます。

  • 最初、物質 A, B, C の量はそれぞれ 1, 1, 1 グラム
  • 1 秒後、物質 A, B, C の量はそれぞれ 1.1, 1.1, 0.8 グラムになる
  • 2 秒後、物質 A, B, C の量はそれぞれ 1.21, 1.12, 0.67 グラムになる

次に、2 番目の問題 (X = 0.01, Y = 0.02, Z = 0.03, T = 3) では、次のように物質の量が変化していきます。

  • 最初、物質 A, B, C の量はそれぞれ 1, 1, 1 グラム
  • 1 秒後、物質 A, B, C の量はそれぞれ 1.01, 0.98, 1.01 グラムになる
  • 2 秒後、物質 A, B, C の量はそれぞれ 1.0192, 0.9607, 1.0201 グラムになる
  • 3 秒後、物質 A, B, C の量はそれぞれ 1.027637, 0.942080, 1.030283 グラムになる

残りの 3, 4, 5 番目の問題についても答えれば、正解となります。ただし、3 番目の物質 A の量を 1.525879e-5 といった指数形式で出力しないようにしてください。

101 - Don't be too close(★6)

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 6

問題文

1 から N までの整数が書かれた、N 個のボールがあります。 k = 1, 2, 3, ..., N それぞれについて、以下の質問に答えてください。

  • これら N 個のボールから 1 個以上のボールを選ぶ方法は 2^N-1 通り存在するが、その中で次の条件を満たす選び方は何通りあるか。
    • どの選んだ 2 つのボールについても、書かれている整数の差が k 以上である。
  • ただし、答えは非常に大きくなることがあるので、10^9+7 で割った余りを出力すること。

制約

  • 1 \leq N \leq 10^5
  • N は整数

入力

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

N

出力

出力は N 行からなります。

i\ (1\leq i \leq N) 行目には、k = i のときの答えを 10^9+7 で割った余りを出力してください。


入力例 1

1

出力例 1

1

ボール 1 を選ぶ 1 通りのみが存在します。


入力例 2

2

出力例 2

3
2

k=1 のとき、選んだボールの集合として、\{1\}\{2\}\{1,2\}3 通りが存在します。

k=2 のとき、\{1\}\{2\}2 通りが存在します。


入力例 3

3

出力例 3

7
4
3

入力例 4

4

出力例 4

15
7
5
4

入力例 5

7

出力例 5

127
33
18
13
10
8
7

入力例 6

20

出力例 6

1048575
17710
2744
906
430
250
167
118
90
75
65
56
48
41
35
30
26
23
21
20

入力例 7

50

出力例 7

898961330
951279874
262271567
14341526
1985602
466851
153365
63191
30623
16687
9987
6453
4354
3070
2290
1790
1427
1138
910
735
605
512
448
405
375
350
326
303
281
260
240
221
203
186
170
155
141
128
116
105
95
86
78
71
65
60
56
53
51
50

10^9+7 で割った余りを出力してください。


Source Name

「競プロ典型90問」15日目
102 - Tricolor Pyramid

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 600

問題文

N 個のブロックが横一列に並んでおり、それぞれのブロックは青・白・赤のうちいずれかで塗られています。 左から i 番目 (1 \leq i \leq N) のブロックの色は文字 c_i で表され、B は青、W は白、R は赤に対応しています。

この状態から青・白・赤のブロックを積み上げ、N 段のピラミッドの形にします。以下の図がその一例です。

ここでは、ブロックを下から順に、以下の規則で 1 個ずつ置いていきます。

  • 直下にある 2 個のブロックの色が同じ場合、それと同じ色のブロックを置く
  • 直下にある 2 個のブロックの色が異なる場合、そのどちらでもない色のブロックを置く

このとき、一番上のブロックはどの色になるでしょうか?

制約

  • N2 \leq N \leq 400000 を満たす整数
  • c_1, c_2, \dots, c_N はそれぞれ BWR のいずれか

入力

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

N
c_1c_2\cdotsc_N

出力

一番上のブロックの色が青ならば B、白ならば W、赤ならば R を出力してください。


入力例 1

3
BWR

出力例 1

W

この入力例では、ブロックを以下のように積み上げることになります。

  • 一番下の段の左から 1, 2 番目のブロックはそれぞれ青色・白色なので、その上に赤色のブロックを置く。
  • 一番下の段の左から 2, 3 番目のブロックはそれぞれ白色・赤色なので、その上に青色のブロックを置く。
  • 下から 2 段目のブロックはそれぞれ赤色・青色なので,その上に白色のブロックを置く。

一番上のブロックの色は白となるため、W を出力します。


入力例 2

4
RRBB

出力例 2

W

この入力例では、ブロックを以下のように積み上げることになります。

  • 一番下の段の左から 1, 2 番目のブロックはそれぞれ赤色・赤色なので、その上に赤色のブロックを置く。
  • 一番下の段の左から 2, 3 番目のブロックはそれぞれ赤色・青色なので、その上に白色のブロックを置く。
  • 一番下の段の左から 3, 4 番目のブロックはそれぞれ青色・青色なので、その上に青色のブロックを置く。
  • 下から 2 段目の左から 1, 2 番目のブロックはそれぞれ赤色・白色なので、その上に青色のブロックを置く。
  • 下から 2 段目の左から 2, 3 番目のブロックはそれぞれ白色・青色なので、その上に赤色のブロックを置く。
  • 下から 3 段目のブロックはそれぞれ青色・赤色なので、その上に白色のブロックを置く。

一番上のブロックの色は白となるため、W を出力します。


入力例 3

6
BWWRBW

出力例 3

B

最終的なブロックの並びは、以下の図のように表されます。一番上のブロックの色は青となるため、B を出力します。

なお、これは問題文中に例示したケースと同じものになっています。


入力例 4

8
WWBRBBWB

出力例 4

R

最終的なブロックの並びは、以下の図のように表されます。一番上のブロックの色は赤となるため、R を出力します。


入力例 5

21
BWBRRBBRWBRBBBRRBWWWR

出力例 5

B

Score : 600 points

Problem Statement

We have N blocks arranged in a row, where each block is painted blue, white, or red. The color of the i-th block from the left (1 \leq i \leq N) is represented by a character c_i; B, W, and R stand for blue, white, and red, respectively.

From this situation, we will pile up blue, white, and red blocks to make a pyramid with N steps. The following figure shows an example of this:

Here, we place blocks one by one from bottom to top as follows:

  • if the two blocks immediately below a position have the same color, we will place there a block of the same color;
  • if the two blocks immediately below a position have different colors, we will place there a block of the color different from those two colors.

What will be the color of the block at the top?

Constraints

  • N is an integer satisfying 2 \leq N \leq 400000.
  • Each of c_1, c_2, \dots, c_N is B, W, or R.

Input

Input is given from Standard Input in the following format:

N
c_1c_2\cdotsc_N

Output

If the topmost block will be blue, print B; if it will be white, print W; if it will be red, print R.


Sample Input 1

3
BWR

Sample Output 1

W

In this case, we will pile up blocks as follows:

  • the 1-st and 2-nd blocks from the left in the bottom row are respectively blue and white, so we place a red block on top of it;
  • the 2-nd and 3-rd blocks from the left in the bottom row are respectively white and red, so we place a blue block on top of it;
  • the blocks in the 2-nd row from the bottom are respectively red and blue, so we place a white block on top of it.

Thus, the block at the top will be white; we should print W.


Sample Input 2

4
RRBB

Sample Output 2

W

In this case, we will pile up blocks as follows:

  • the 1-st and 2-nd blocks from the left in the bottom row are both red, so we place a red block on top of it;
  • the 2-nd and 3-rd blocks from the left in the bottom row are respectively red and blue, so we place a white block on top of it;
  • the 3-rd and 4-th blocks from the left in the bottom row are both blue, so we place a blue block on top of it;
  • the 1-st and 2-nd blocks from the left in the 2-nd row from the bottom are respectively red and white, so we place a blue block on top of it;
  • the 2-nd and 3-rd blocks from the left in the 2-nd row from the bottom are respectively white and blue, so we place a red block on top of it;
  • the blocks in the 3-rd row from the bottom are respectively blue and red, so we place a white block on top of it.

Thus, the block at the top will be white; we should print W.


Sample Input 3

6
BWWRBW

Sample Output 3

B

The figure below shows the final arrangement of blocks. The block at the top will be blue; we should print B.

Note that this is the case shown as an example in Problem Statement.


Sample Input 4

8
WWBRBBWB

Sample Output 4

R

The figure below shows the final arrangement of blocks. The block at the top will be red; we should print R.


Sample Input 5

21
BWBRRBBRWBRBBBRRBWWWR

Sample Output 5

B
103 - Circle Packing

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 10000

問題文

中心座標が (0, 0) である半径 1 の円に、等しい半径の円を 100 個敷き詰める方法のうち、円の半径ができるだけ大きいものを求めてください。

なお、記録は 21 世紀になってからも塗り替えられており、いまだ解決されていない難問です。

入力形式

この問題では入力が与えられません。

出力形式

i 個目の円の中心座標を (x_i, y_i) とします。100 行にわたって以下の形式で出力してください。

x_1 y_1
x_2 y_2
\vdots
x_{100} y_{100}

なお、円の中心座標がすべて決まれば、円の半径は円同士が重ならないギリギリの値に自動的に設定されるので、半径を出力する必要はありません。

出力する実数 x_i, y_i は、1.23456e-03 のような指数表記で出力せず、すべて 0.00123456 のような形式で出力してください。

得点計算

この問題では、配置する円の大きさができるだけ大きいほど高得点が得られるようになっています。

まず、以下の条件を 1 つでも満たした場合は、不正解 (WA) となります。

  • 出力形式が指定されたフォーマットに沿っていない(指数表記で出力している場合も含む)
  • いずれかの i \ (1 \leq i \leq 100) に対して、\sqrt{{x_i}^2 + {y_i}^2} \gt 1 である(円の中心座標が半径 1 の円の内部に入っていない)

それ以外の場合は正解 (AC) と判定されます。100 個の円の中心座標から計算された円の半径 R に応じて、以下のように得点が決まります。

  • 以下の 9 個の点を基準にして、R の 1 次関数的に(折れ線グラフのように)得点が増加していきます。
R 0.00 0.07 0.08 0.085 0.088 0.089 0.0895 0.0900 0.090235
得点 0 350 750 1250 1700 2000 2700 4000 8700
  • R \gt 0.090235 のとき、R10^{-9} 増えるごとに 1 点上がるペースで得点が増加していきます。
  • ただし、得点は小数点以下を四捨五入して整数に丸められます。

出力例

-0.63 -0.63
-0.63 -0.49
-0.63 -0.35
-0.63 -0.21
-0.63 -0.07
-0.63 0.07
-0.63 0.21
-0.63 0.35
-0.63 0.49
-0.63 0.63
-0.49 -0.63
-0.49 -0.49
-0.49 -0.35
-0.49 -0.21
-0.49 -0.07
-0.49 0.07
-0.49 0.21
-0.49 0.35
-0.49 0.49
-0.49 0.63
-0.35 -0.63
-0.35 -0.49
-0.35 -0.35
-0.35 -0.21
-0.35 -0.07
-0.35 0.07
-0.35 0.21
-0.35 0.35
-0.35 0.49
-0.35 0.63
-0.21 -0.63
-0.21 -0.49
-0.21 -0.35
-0.21 -0.21
-0.21 -0.07
-0.21 0.07
-0.21 0.21
-0.21 0.35
-0.21 0.49
-0.21 0.63
-0.07 -0.63
-0.07 -0.49
-0.07 -0.35
-0.07 -0.21
-0.07 -0.07
-0.07 0.07
-0.07 0.21
-0.07 0.35
-0.07 0.49
-0.07 0.63
0.07 -0.63
0.07 -0.49
0.07 -0.35
0.07 -0.21
0.07 -0.07
0.07 0.07
0.07 0.21
0.07 0.35
0.07 0.49
0.07 0.63
0.21 -0.63
0.21 -0.49
0.21 -0.35
0.21 -0.21
0.21 -0.07
0.21 0.07
0.21 0.21
0.21 0.35
0.21 0.49
0.21 0.63
0.35 -0.63
0.35 -0.49
0.35 -0.35
0.35 -0.21
0.35 -0.07
0.35 0.07
0.35 0.21
0.35 0.35
0.35 0.49
0.35 0.63
0.49 -0.63
0.49 -0.49
0.49 -0.35
0.49 -0.21
0.49 -0.07
0.49 0.07
0.49 0.21
0.49 0.35
0.49 0.49
0.49 0.63
0.63 -0.63
0.63 -0.49
0.63 -0.35
0.63 -0.21
0.63 -0.07
0.63 0.07
0.63 0.21
0.63 0.35
0.63 0.49
0.63 0.63

この出力は、以下の図のように円を配置することに相当します。

円の半径は 0.07 となるので、あなたは 350 点を獲得します。

104 - Graph Master

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 10000

問題文

以下の条件をすべて満たす重みなし無向グラフを 1 つ構成してください。

  • 多重辺や自己ループは存在しない。
  • すべての頂点の次数が 4 以下である。
  • すべての 2 頂点間の最短経路長が 4 以下である。

頂点数が多いほど、高い得点が得られます。


入力

この問題に入力はありません。

出力

以下の形式で答えを出力してください。

N M
A_1 B_1
A_2 B_2
 :
A_M B_M

ただし、それぞれの変数は以下の情報を表します。ここで、1 \leq A_i, B_i \leq N を満たす必要があります。

このグラフには頂点が N 個あり、1 から N までの番号が付けられています。
また、辺が M 本あり、i 番目の辺は頂点 A_iB_i を双方向に結んでいます。

得点

正しい形式で出力されていない場合、あるいは出力が条件を満たさない場合は 0 点となります。

出力が条件を満たす場合は、100 \times N 点が得られます。


入力例 1

(No Input)

出力例 1

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

この出力例は、以下のグラフに対応します。

頂点は 9 個あるので、100 \times 9 = 900 点が得られます。

なお、たとえば以下のような出力をすると、不正解となります。

なぜなら、頂点 18 の間の最短経路長が 7 であり、問題文の条件を満たさないからです。

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