A - Still TBD

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 : 100

問題文

文字列 S が入力されます。これは、西暦 2019 年の実在する日付を yyyy/mm/dd の形式で表したものです。(例えば、2019430 日は 2019/04/30 と表されます。)

S が表す日付が 2019430 日またはそれ以前なら Heisei、そうでなければ TBD と出力するプログラムを書いてください。

制約

  • S は西暦 2019 年の実在する日付を yyyy/mm/dd の形式で表す文字列である。

入力

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

S

出力

S が表す日付が 2019430 日またはそれ以前なら Heisei、そうでなければ TBD と出力せよ。


入力例 1

2019/04/30

出力例 1

Heisei

入力例 2

2019/11/01

出力例 2

TBD

Score : 100 points

Problem Statement

You are given a string S as input. This represents a valid date in the year 2019 in the yyyy/mm/dd format. (For example, April 30, 2019 is represented as 2019/04/30.)

Write a program that prints Heisei if the date represented by S is not later than April 30, 2019, and prints TBD otherwise.

Constraints

  • S is a string that represents a valid date in the year 2019 in the yyyy/mm/dd format.

Input

Input is given from Standard Input in the following format:

S

Output

Print Heisei if the date represented by S is not later than April 30, 2019, and print TBD otherwise.


Sample Input 1

2019/04/30

Sample Output 1

Heisei

Sample Input 2

2019/11/01

Sample Output 2

TBD
B - Digital Gifts

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 : 200

問題文

高橋くんは N 人の親戚からお年玉をもらいました。

N 個の値 x_1, x_2, ..., x_NN 個の文字列 u_1, u_2, ..., u_N が入力されます。各文字列 u_iJPY または BTC であり、x_iu_ii 人目の親戚からのお年玉の内容を表します。

例えば、x_1 = 10000, u_1 = JPY であれば 1 人目の親戚からのお年玉は 10000 円であり、x_2 = 0.10000000, u_2 = BTC であれば 2 人目の親戚からのお年玉は 0.1 ビットコインです。

ビットコインを 1.0 BTC あたり 380000.0 円として換算すると、高橋くんがもらったお年玉は合計で何円に相当するでしょうか?

制約

  • 2 \leq N \leq 10
  • u_i = JPY または BTC
  • u_i = JPY のとき x_i は整数であり、1 \leq x_i \leq 10^8
  • u_i = BTC のとき x_i は小数点以下の桁を 8 桁持つ小数であり、0.00000001 \leq x_i \leq 100.00000000

入力

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

N
x_1 u_1
x_2 u_2
:
x_N u_N

出力

高橋くんが受け取ったお年玉が合計で Y 円に相当するとき、値 Y (整数とは限らない) を出力せよ。

出力は、ジャッジの出力との絶対誤差または相対誤差が 10^{-5} 以下のとき正解と判定される。


入力例 1

2
10000 JPY
0.10000000 BTC

出力例 1

48000.0

1 人目の親戚からのお年玉は 10000 円です。2 人目の親戚からのお年玉は 0.1 ビットコインであり、1 BTC あたり 380000.0 円として換算すると 38000.0 円となります。これらの合計は 48000.0 円です。

なお、4800048000.1 などと出力しても正解と判定されます。


入力例 2

3
100000000 JPY
100.00000000 BTC
0.00000001 BTC

出力例 2

138000000.0038

この場合、1380010001.38e8 などと出力しても正解と判定されます。

Score : 200 points

Problem Statement

Takahashi received otoshidama (New Year's money gifts) from N of his relatives.

You are given N values x_1, x_2, ..., x_N and N strings u_1, u_2, ..., u_N as input. Each string u_i is either JPY or BTC, and x_i and u_i represent the content of the otoshidama from the i-th relative.

For example, if x_1 = 10000 and u_1 = JPY, the otoshidama from the first relative is 10000 Japanese yen; if x_2 = 0.10000000 and u_2 = BTC, the otoshidama from the second relative is 0.1 bitcoins.

If we convert the bitcoins into yen at the rate of 380000.0 JPY per 1.0 BTC, how much are the gifts worth in total?

Constraints

  • 2 \leq N \leq 10
  • u_i = JPY or BTC.
  • If u_i = JPY, x_i is an integer such that 1 \leq x_i \leq 10^8.
  • If u_i = BTC, x_i is a decimal with 8 decimal digits, such that 0.00000001 \leq x_i \leq 100.00000000.

Input

Input is given from Standard Input in the following format:

N
x_1 u_1
x_2 u_2
:
x_N u_N

Output

If the gifts are worth Y yen in total, print the value Y (not necessarily an integer).

Output will be judged correct when the absolute or relative error from the judge's output is at most 10^{-5}.


Sample Input 1

2
10000 JPY
0.10000000 BTC

Sample Output 1

48000.0

The otoshidama from the first relative is 10000 yen. The otoshidama from the second relative is 0.1 bitcoins, which is worth 38000.0 yen if converted at the rate of 380000.0 JPY per 1.0 BTC. The sum of these is 48000.0 yen.

Outputs such as 48000 and 48000.1 will also be judged correct.


Sample Input 2

3
100000000 JPY
100.00000000 BTC
0.00000001 BTC

Sample Output 2

138000000.0038

In this case, outputs such as 138001000 and 1.38e8 will also be judged correct.

C - Synthetic Kadomatsu

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 : 300

問題文

あなたは N 本の竹を持っています。これらの長さはそれぞれ l_1, l_2, ..., l_N です (単位: センチメートル)。

あなたの目的は、これらの竹のうち何本か (全部でもよい) を使い、長さが A, B, C であるような 3 本の竹を得ることです。そのために、以下の三種類の魔法を任意の順に何度でも使うことができます。

  • 延長魔法: 1 MP (マジックポイント) を消費し、1 本の竹を選んでその長さを 1 増やす。
  • 短縮魔法: 1 MP を消費し、1 本の長さ 2 以上の竹を選んでその長さを 1 減らす。
  • 合成魔法: 10 MP を消費し、2 本の竹を選んで接続し 1 本の竹とする。この新たな竹の長さは接続した 2 本の竹の長さの合計に等しい。(以後、この竹に対してさらに魔法を使用することもできる。)

目的を達成するには、最小でいくつの MP が必要でしょうか?

制約

  • 3 \leq N \leq 8
  • 1 \leq C < B < A \leq 1000
  • 1 \leq l_i \leq 1000
  • 入力される値はすべて整数である。

入力

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

N A B C
l_1
l_2
:
l_N

出力

目的の達成に必要な MP の最小量を出力せよ。


入力例 1

5 100 90 80
98
40
30
21
80

出力例 1

23

長さ 98, 40, 30, 21, 805 本の竹から長さ 100, 90, 803 本の竹を得ようとしています。長さ 80 の竹ははじめから持っており、長さ 100, 90 の竹は次のように魔法を使うと合計 23 MP を消費することで得られ、これが最適です。

  1. 長さ 98 の竹に延長魔法を 2 回使い、長さ 100 の竹を得る。(消費 MP: 2)
  2. 長さ 40, 30 の竹に合成魔法を使い、長さ 70 の竹を得る。(消費 MP: 10)
  3. 長さ 21 の竹に短縮魔法を 1 回使い、長さ 20 の竹を得る。(消費 MP: 1)
  4. 手順 2. で得た長さ 70 の竹と手順 3. で得た長さ 20 の竹に合成魔法を使い、長さ 90 の竹を得る。(消費 MP: 10)

入力例 2

8 100 90 80
100
100
90
90
90
80
80
80

出力例 2

0

欲しい長さの竹をすでにすべて持っている場合、必要な MP は 0 です。このように、必ずしもすべての竹を使う必要はありません。


入力例 3

8 1000 800 100
300
333
400
444
500
555
600
666

出力例 3

243

Score : 300 points

Problem Statement

You have N bamboos. The lengths (in centimeters) of these are l_1, l_2, ..., l_N, respectively.

Your objective is to use some of these bamboos (possibly all) to obtain three bamboos of length A, B, C. For that, you can use the following three kinds of magics any number:

  • Extension Magic: Consumes 1 MP (magic point). Choose one bamboo and increase its length by 1.
  • Shortening Magic: Consumes 1 MP. Choose one bamboo of length at least 2 and decrease its length by 1.
  • Composition Magic: Consumes 10 MP. Choose two bamboos and combine them into one bamboo. The length of this new bamboo is equal to the sum of the lengths of the two bamboos combined. (Afterwards, further magics can be used on this bamboo.)

At least how much MP is needed to achieve the objective?

Constraints

  • 3 \leq N \leq 8
  • 1 \leq C < B < A \leq 1000
  • 1 \leq l_i \leq 1000
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

N A B C
l_1
l_2
:
l_N

Output

Print the minimum amount of MP needed to achieve the objective.


Sample Input 1

5 100 90 80
98
40
30
21
80

Sample Output 1

23

We are obtaining three bamboos of lengths 100, 90, 80 from five bamboos 98, 40, 30, 21, 80. We already have a bamboo of length 80, and we can obtain bamboos of lengths 100, 90 by using the magics as follows at the total cost of 23 MP, which is optimal.

  1. Use Extension Magic twice on the bamboo of length 98 to obtain a bamboo of length 100. (MP consumed: 2)
  2. Use Composition Magic on the bamboos of lengths 40, 30 to obtain a bamboo of length 70. (MP consumed: 10)
  3. Use Shortening Magic once on the bamboo of length 21 to obtain a bamboo of length 20. (MP consumed: 1)
  4. Use Composition Magic on the bamboo of length 70 obtained in step 2 and the bamboo of length 20 obtained in step 3 to obtain a bamboo of length 90. (MP consumed: 10)

Sample Input 2

8 100 90 80
100
100
90
90
90
80
80
80

Sample Output 2

0

If we already have all bamboos of the desired lengths, the amount of MP needed is 0. As seen here, we do not necessarily need to use all the bamboos.


Sample Input 3

8 1000 800 100
300
333
400
444
500
555
600
666

Sample Output 3

243
D - Lazy Faith

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 : 400

問題文

東西方向に伸びる道路に沿って A 社の神社と B 軒の寺が建っています。 西から i 社目の神社は道路の西端から s_i メートルの地点に、西から i 軒目の寺は道路の西端から t_i メートルの地点にあります。

以下の Q 個の問いに答えてください。

i (1 \leq i \leq Q): 道路の西端から x_i メートルの地点から出発して道路上を自由に移動するとき、神社一社と寺一軒を訪れるのに必要な最小の移動距離は何メートルか? (必要数を超えた数の寺社を通過してもよい。)

制約

  • 1 \leq A, B \leq 10^5
  • 1 \leq Q \leq 10^5
  • 1 \leq s_1 < s_2 < ... < s_A \leq 10^{10}
  • 1 \leq t_1 < t_2 < ... < t_B \leq 10^{10}
  • 1 \leq x_i \leq 10^{10}
  • s_1, ..., s_A, t_1, ..., t_B, x_1, ..., x_Q はすべて異なる。
  • 入力される値はすべて整数である。

入力

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

A B Q
s_1
:
s_A
t_1
:
t_B
x_1
:
x_Q

出力

Q 行出力せよ。i 行目に問 i への答えを出力すること。


入力例 1

2 3 4
100
600
400
900
1000
150
2000
899
799

出力例 1

350
1400
301
399

2 社の神社と 3 軒の寺があり、神社は道路の西端から 100, 600 メートルの地点に、寺は道路の西端から 400, 900, 1000 メートルの地点にあります。

  • 1: 道路の西端から 150 メートルの地点から出発する場合、まず西に 50 メートル進んで神社を訪れ、次に東に 300 メートル進んで寺を訪れるのが最適です。
  • 2: 道路の西端から 2000 メートルの地点から出発する場合、まず西に 1000 メートル進んで寺を訪れ、次に西に 400 メートル進んで神社を訪れるのが最適です。途中で寺をもう一軒通過しますが、構いません。
  • 3: 道路の西端から 899 メートルの地点から出発する場合、まず東に 1 メートル進んで寺を訪れ、次に西に 300 メートル進んで神社を訪れるのが最適です。
  • 4: 道路の西端から 799 メートルの地点から出発する場合、まず西に 199 メートル進んで神社を訪れ、次に西に 200 メートル進んで寺を訪れるのが最適です。

入力例 2

1 1 3
1
10000000000
2
9999999999
5000000000

出力例 2

10000000000
10000000000
14999999998

道路は長く、32 ビット整数に収まらない距離を移動する必要があるかもしれません。

Score : 400 points

Problem Statement

Along a road running in an east-west direction, there are A shrines and B temples. The i-th shrine from the west is located at a distance of s_i meters from the west end of the road, and the i-th temple from the west is located at a distance of t_i meters from the west end of the road.

Answer the following Q queries:

  • Query i (1 \leq i \leq Q): If we start from a point at a distance of x_i meters from the west end of the road and freely travel along the road, what is the minimum distance that needs to be traveled in order to visit one shrine and one temple? (It is allowed to pass by more shrines and temples than required.)

Constraints

  • 1 \leq A, B \leq 10^5
  • 1 \leq Q \leq 10^5
  • 1 \leq s_1 < s_2 < ... < s_A \leq 10^{10}
  • 1 \leq t_1 < t_2 < ... < t_B \leq 10^{10}
  • 1 \leq x_i \leq 10^{10}
  • s_1, ..., s_A, t_1, ..., t_B, x_1, ..., x_Q are all different.
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

A B Q
s_1
:
s_A
t_1
:
t_B
x_1
:
x_Q

Output

Print Q lines. The i-th line should contain the answer to the i-th query.


Sample Input 1

2 3 4
100
600
400
900
1000
150
2000
899
799

Sample Output 1

350
1400
301
399

There are two shrines and three temples. The shrines are located at distances of 100, 600 meters from the west end of the road, and the temples are located at distances of 400, 900, 1000 meters from the west end of the road.

  • Query 1: If we start from a point at a distance of 150 meters from the west end of the road, the optimal move is first to walk 50 meters west to visit a shrine, then to walk 300 meters east to visit a temple.
  • Query 2: If we start from a point at a distance of 2000 meters from the west end of the road, the optimal move is first to walk 1000 meters west to visit a temple, then to walk 400 meters west to visit a shrine. We will pass by another temple on the way, but it is fine.
  • Query 3: If we start from a point at a distance of 899 meters from the west end of the road, the optimal move is first to walk 1 meter east to visit a temple, then to walk 300 meters west to visit a shrine.
  • Query 4: If we start from a point at a distance of 799 meters from the west end of the road, the optimal move is first to walk 199 meters west to visit a shrine, then to walk 200 meters west to visit a temple.

Sample Input 2

1 1 3
1
10000000000
2
9999999999
5000000000

Sample Output 2

10000000000
10000000000
14999999998

The road is quite long, and we may need to travel a distance that does not fit into a 32-bit integer.