Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 100 点
問題文
文字列 S が入力されます。これは、西暦 2019 年の実在する日付を yyyy/mm/dd
の形式で表したものです。(例えば、2019 年 4 月 30 日は 2019/04/30
と表されます。)
S が表す日付が 2019 年 4 月 30 日またはそれ以前なら Heisei
、そうでなければ TBD
と出力するプログラムを書いてください。
制約
- S は西暦 2019 年の実在する日付を
yyyy/mm/dd
の形式で表す文字列である。
入力
入力は以下の形式で標準入力から与えられる。
S
出力
S が表す日付が 2019 年 4 月 30 日またはそれ以前なら 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
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 200 点
問題文
高橋くんは N 人の親戚からお年玉をもらいました。
N 個の値 x_1, x_2, ..., x_N と N 個の文字列 u_1, u_2, ..., u_N が入力されます。各文字列 u_i は JPY
または BTC
であり、x_i と u_i が i 人目の親戚からのお年玉の内容を表します。
例えば、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 円です。
なお、48000
、48000.1
などと出力しても正解と判定されます。
入力例 2
3 100000000 JPY 100.00000000 BTC 0.00000001 BTC
出力例 2
138000000.0038
この場合、138001000
、1.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
orBTC
. - 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.
Time Limit: 2 sec / Memory Limit: 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, 80 の 5 本の竹から長さ 100, 90, 80 の 3 本の竹を得ようとしています。長さ 80 の竹ははじめから持っており、長さ 100, 90 の竹は次のように魔法を使うと合計 23 MP を消費することで得られ、これが最適です。
- 長さ 98 の竹に延長魔法を 2 回使い、長さ 100 の竹を得る。(消費 MP: 2)
- 長さ 40, 30 の竹に合成魔法を使い、長さ 70 の竹を得る。(消費 MP: 10)
- 長さ 21 の竹に短縮魔法を 1 回使い、長さ 20 の竹を得る。(消費 MP: 1)
- 手順 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.
- Use Extension Magic twice on the bamboo of length 98 to obtain a bamboo of length 100. (MP consumed: 2)
- Use Composition Magic on the bamboos of lengths 40, 30 to obtain a bamboo of length 70. (MP consumed: 10)
- Use Shortening Magic once on the bamboo of length 21 to obtain a bamboo of length 20. (MP consumed: 1)
- 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
Time Limit: 2 sec / Memory Limit: 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.