Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 100 点
問題文
AtCoder では、ユーザーのレートは正の整数で与えられ、その値に応じて ^
がいくつか表示されます。
特に、レートが 1 以上 399 以下のときは次のようになります。
- レートが 1 以上 99 以下のときは
^
は 1 個表示される。 - レートが 100 以上 199 以下のときは
^
は 2 個表示される。 - レートが 200 以上 299 以下のときは
^
は 3 個表示される。 - レートが 300 以上 399 以下のときは
^
は 4 個表示される。
現在の高橋君のレートは R です。ここで、R は 1 以上 299 以下の整数であることが保証されます。
表示される ^
の数を現在より増やすために、高橋君は少なくともレートをいくつ上げる必要があるか答えてください。
なお、本問題の制約下で、高橋君はレートを 400 以上に上げることなく ^
の数を増やすことができることが証明できます。
制約
- 1\leq R \leq 299
- R は整数
入力
入力は以下の形式で標準入力から与えられる。
R
出力
表示される ^
の数を現在より増やすために、高橋君は少なくともレートをいくつ上げる必要があるか整数で出力せよ。
入力例 1
123
出力例 1
77
高橋君の現在のレートは 123 であり、^
は 2 個表示されています。
ここからレートを 77 上げると高橋君のレートは 200 となり、^
は 3 個表示されるようになります。
レート が 199 以下のときは ^
の数は 2 個以下であるので、77 を出力します。
入力例 2
250
出力例 2
50
Score : 100 points
Problem Statement
In AtCoder, a user's rating is given as a positive integer, and based on this value, a certain number of ^
is displayed.
Specifically, when the rating is between 1 and 399, inclusive, the display rules are as follows:
- When the rating is between 1 and 99, inclusive,
^
is displayed once. - When the rating is between 100 and 199, inclusive,
^
is displayed twice. - When the rating is between 200 and 299, inclusive,
^
is displayed three times. - When the rating is between 300 and 399, inclusive,
^
is displayed four times.
Currently, Takahashi's rating is R. Here, it is guaranteed that R is an integer between 1 and 299, inclusive.
Find the minimum increase in rating required for him to increase the number of displayed ^
.
It can be proved that under the constraints of this problem, he can increase the number of ^
without raising his rating to 400 or above.
Constraints
- 1 \leq R \leq 299
- R is an integer.
Input
The input is given from Standard Input in the following format:
R
Output
Print, as an integer, the minimum increase in rating required for Takahashi to increase the number of displayed ^
.
Sample Input 1
123
Sample Output 1
77
Takahashi's current rating is 123, and ^
is displayed twice.
By increasing his rating by 77, his rating will become 200, and ^
will be displayed three times.
When the rating is 199 or below, ^
is displayed not more than twice, so print 77.
Sample Input 2
250
Sample Output 2
50
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 200 点
問題文
N 人の人がおり、i 人目 (1\leq i\leq N) の現在の髪の長さは L_i です。
すべての人は 1 日経つごとに髪の長さが 1 ずつ増えます。
髪の長さが T 以上の人が初めて P 人以上になるのは現在から何日後か出力してください。
ただし、現在の時点ですでに髪の長さが T 以上の人が P 人以上にいる場合は 0 を出力してください。
制約
- 1\leq N\leq 100
- 1\leq L_i\leq 100
- 1\leq T\leq 100
- 1\leq P\leq N
- 入力はすべて整数
入力
入力は以下の形式で標準入力から与えられる。
N T P L_1 L_2 \ldots L_N
出力
髪の長さが T 以上の人が初めて P 人以上になるのは現在から何日後か出力せよ。 ただし、現在の時点ですでに条件をみたしている場合は 0 を出力せよ。
入力例 1
5 10 3 3 11 1 6 2
出力例 1
7
5 人の人がおり、現在の時点で髪の長さはそれぞれ 3,11,1,6,2 であるため、髪の長さが 10 以上の人は 1 人です。
現在から 7 日後にはそれぞれの人の髪の長さは順に 10,18,8,13,9 となり、髪の長さが 10 以上の人は 3 人となります。
現在から 6 日後の時点では髪の長さが 10 以上の人は 2 人であるため条件をみたしておらず、よって 7 を出力します。
入力例 2
2 5 2 10 10
出力例 2
0
現在の時点ですでに髪の長さが 5 以上の人が 2 人いるため条件をみたしており、0 を出力します。
入力例 3
3 10 1 1 2 3
出力例 3
7
Score : 200 points
Problem Statement
There are N people, and the current hair length of the i-th person (1 \leq i \leq N) is L_i.
Each person's hair grows by 1 per day.
Print the number of days after which the number of people whose hair length is at least T becomes P or more for the first time.
If there are already P or more people whose hair length is at least T now, print 0.
Constraints
- 1 \leq N \leq 100
- 1 \leq L_i \leq 100
- 1 \leq T \leq 100
- 1 \leq P \leq N
- All input values are integers.
Input
The input is given from Standard Input in the following format:
N T P L_1 L_2 \ldots L_N
Output
Print the number of days after which the number of people whose hair length is at least T becomes P or more for the first time. If this condition is already satisfied now, print 0.
Sample Input 1
5 10 3 3 11 1 6 2
Sample Output 1
7
There are five people, and their current hair lengths are 3, 11, 1, 6, 2, so there is one person whose hair length is at least 10.
After seven days, the hair lengths of the people will be 10, 18, 8, 13, 9, respectively, and there will be three people whose hair length is at least 10.
After six days, there are only two people whose hair length is at least 10, not satisfying the condition, so print 7.
Sample Input 2
2 5 2 10 10
Sample Output 2
0
Since there are already two people whose hair length is at least 5 now, satisfying the condition, so print 0.
Sample Input 3
3 10 1 1 2 3
Sample Output 3
7
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 300 点
問題文
英小文字のみからなる長さ N の文字列 S が与えられます。
S の文字を並び替えて得られる文字列(S 自身を含む)であって、長さ K の回文を部分文字列として 含まない ものの個数を求めてください。
ただし、長さ N の文字列 T が「長さ K の回文を部分文字列として含む」とは、
ある (N-K) 以下の非負整数 i が存在して、1 以上 K 以下の任意の整数 j について T_{i+j}=T_{i+K+1-j} が成り立つことをいいます。
ここで、T_k は文字列 T の k 文字目を表すものとします。
制約
- 2\leq K \leq N \leq 10
- N,K は整数
- S は英小文字のみからなる長さ N の文字列
入力
入力は以下の形式で標準入力から与えられる。
N K S
出力
S の文字を並び替えて得られる文字列であって、長さ K の回文を部分文字列として含まないものの個数を出力せよ。
入力例 1
3 2 aab
出力例 1
1
aab
を並び替えて得られる文字列は aab
, aba
, baa
の 3 つであり、このうち aab
および baa
は長さ 2 の回文 aa
を部分文字列として含んでいます。
よって、条件をみたす文字列は aba
のみであり、1 を出力します。
入力例 2
5 3 zzyyx
出力例 2
16
zzyyx
を並べて得られる文字列は 30 個ありますが、そのうち長さ 3 の回文を含まないようなものは 16 個です。よって、16 を出力します。
入力例 3
10 5 abcwxyzyxw
出力例 3
440640
Score : 300 points
Problem Statement
You are given a string S of length N consisting only of lowercase English letters.
Find the number of strings obtained by permuting the characters of S (including the string S itself) that do not contain a palindrome of length K as a substring.
Here, a string T of length N is said to "contain a palindrome of length K as a substring" if and only if there exists a non-negative integer i not greater than (N-K) such that T_{i+j} = T_{i+K+1-j} for every integer j with 1 \leq j \leq K.
Here, T_k denotes the k-th character of the string T.
Constraints
- 2 \leq K \leq N \leq 10
- N and K are integers.
- S is a string of length N consisting only of lowercase English letters.
Input
The input is given from Standard Input in the following format:
N K S
Output
Print the number of strings obtained by permuting S that do not contain a palindrome of length K as a substring.
Sample Input 1
3 2 aab
Sample Output 1
1
The strings obtained by permuting aab
are aab
, aba
, and baa
. Among these, aab
and baa
contain the palindrome aa
of length 2 as a substring.
Thus, the only string that satisfies the condition is aba
, so print 1.
Sample Input 2
5 3 zzyyx
Sample Output 2
16
There are 30 strings obtained by permuting zzyyx
, 16 of which do not contain a palindrome of length 3. Thus, print 16.
Sample Input 3
10 5 abcwxyzyxw
Sample Output 3
440640
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 350 点
問題文
非負整数 X を 10 進表記(先行ゼロ無し)で表した文字列が回文である時、X を回文数と呼びます。
例えば 363, 12344321, 0 はいずれも回文数です。
小さい方から N 番目の回文数を求めてください。
制約
- 1 \leq N \leq 10^{18}
- N は整数
入力
入力は以下の形式で標準入力から与えられる。
N
出力
小さい方から N 番目の回文数を出力せよ。
入力例 1
46
出力例 1
363
小さい方から 46 番目の回文数は 363 です。
入力例 2
1
出力例 2
0
入力例 3
1000000000000000000
出力例 3
90000000000000000000000000000000009
Score : 350 points
Problem Statement
A non-negative integer X is called a palindrome number if its decimal representation (without leading zeros) is a palindrome.
For example, 363, 12344321, and 0 are all palindrome numbers.
Find the N-th smallest palindrome number.
Constraints
- 1 \leq N \leq 10^{18}
- N is an integer.
Input
The input is given from Standard Input in the following format:
N
Output
Print the N-th smallest palindrome number.
Sample Input 1
46
Sample Output 1
363
The 46th smallest palindrome number is 363.
Sample Input 2
1
Sample Output 2
0
Sample Input 3
1000000000000000000
Sample Output 3
90000000000000000000000000000000009
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 450 点
問題文
H \times W の大きさの島があり、島は周りを海で囲まれています。
島は 縦 H 個 \times 横 W 個の 1\times 1 の区画に分けられており、上から i 番目かつ左から j 番目の区画の(現在の海面を基準にした)標高は A_{i,j} です。
現在から 1 年ごとに海面の高さが 1 ずつ上昇します。
このとき、海または海に沈んだ区画に上下左右に隣接する区画であって、標高が海面の高さ 以下 の区画は海に沈みます。
ここで、ある区画が新しく海に沈んだときそれと上下左右に隣接する区画であって海面の高さ以下のものも同時に海に沈み、これによって新しく沈んだ区画についてもこれは繰り返されます。
i=1,2,\ldots, Y それぞれについて、現在から i 年後に、島のうち海に沈まず残っている部分の面積を求めてください。
制約
- 1\leq H,W\leq 1000
- 1\leq Y\leq 10^5
- 1\leq A_{i,j}\leq 10^5
- 入力はすべて整数
入力
入力は以下の形式で標準入力から与えられる。
H W Y A_{1,1} A_{1,2} \ldots A_{1,W} A_{2,1} A_{2,2} \ldots A_{2,W} \vdots A_{H,1} A_{H,2} \ldots A_{H,W}
出力
Y 行出力せよ。 i 行目 (1\leq i\leq Y) には現在から i 年後に海に沈まず残っている島の面積を出力せよ。
入力例 1
3 3 5 10 2 10 3 1 4 10 5 10
出力例 1
9 7 6 5 4
島の上から i 番目かつ左から j 番目の区画を (i,j) で表します。このとき、次のようになります。
- 1 年後、海面は現在より 1 上昇しますが、海に面している標高 1 の区画は存在しないため、どの区画も沈みません。よって、1 行目には 9 を出力します。
- 2 年後、海面は現在より 2 上昇し、(1,2) が海に沈みます。これによって、(2,2) は海に沈んだ区画に隣接する区画となりますが、その標高は 2 以下であるため、これも海に沈みます。これら以外にこの時点で他に沈む区画はありません。よって、2 つの区画が沈むため、2 行目には 9-2=7 を出力します。
- 3 年後、海面は現在より 3 上昇し、(2,1) が新しく海に沈みます。他に沈む区画はありません。よって、3 行目には 6 を出力します。
- 4 年後、海面は現在より 4 上昇し、(2,3) が新しく海に沈みます。他に沈む区画はありません。よって、4 行目には 5 を出力します。
- 5 年後、海面は現在より 5 上昇し、(3,2) が新しく海に沈みます。他に沈む区画はありません。よって、5 行目には 4 を出力します。
よって、9,7,6,5,4 をこの順に各行に出力します。
入力例 2
3 5 3 2 2 3 3 3 2 1 2 1 3 2 2 3 3 3
出力例 2
15 7 0
Score : 450 points
Problem Statement
There is an island of size H \times W, surrounded by the sea.
The island is divided into H rows and W columns of 1 \times 1 sections, and the elevation of the section at the i-th row from the top and the j-th column from the left (relative to the current sea level) is A_{i,j}.
Starting from now, the sea level rises by 1 each year.
Here, a section that is vertically or horizontally adjacent to the sea or a section sunk into the sea and has an elevation not greater than the sea level will sink into the sea.
Here, when a section newly sinks into the sea, any vertically or horizontally adjacent section with an elevation not greater than the sea level will also sink into the sea simultaneously, and this process repeats for the newly sunk sections.
For each i=1,2,\ldots, Y, find the area of the island that remains above sea level i years from now.
Constraints
- 1 \leq H, W \leq 1000
- 1 \leq Y \leq 10^5
- 1 \leq A_{i,j} \leq 10^5
- All input values are integers.
Input
The input is given from Standard Input in the following format:
H W Y A_{1,1} A_{1,2} \ldots A_{1,W} A_{2,1} A_{2,2} \ldots A_{2,W} \vdots A_{H,1} A_{H,2} \ldots A_{H,W}
Output
Print Y lines. The i-th line (1 \leq i \leq Y) should contain the area of the island that remains above sea level i years from now.
Sample Input 1
3 3 5 10 2 10 3 1 4 10 5 10
Sample Output 1
9 7 6 5 4
Let (i,j) denote the section at the i-th row from the top and the j-th column from the left. Then, the following happens:
- After 1 year, the sea level is higher than now by 1, but there are no sections with an elevation of 1 that are adjacent to the sea, so no sections sink. Thus, the first line should contain 9.
- After 2 years, the sea level is higher than now by 2, and (1,2) sinks into the sea. This makes (2,2) adjacent to a sunken section, and its elevation is not greater than 2, so it also sinks. No other sections sink at this point. Thus, two sections sink, and the second line should contain 9-2=7.
- After 3 years, the sea level is higher than now by 3, and (2,1) sinks into the sea. No other sections sink. Thus, the third line should contain 6.
- After 4 years, the sea level is higher than now by 4, and (2,3) sinks into the sea. No other sections sink. Thus, the fourth line should contain 5.
- After 5 years, the sea level is higher than now by 5, and (3,2) sinks into the sea. No other sections sink. Thus, the fifth line should contain 4.
Therefore, print 9, 7, 6, 5, 4 in this order, each on a new line.
Sample Input 2
3 5 3 2 2 3 3 3 2 1 2 1 3 2 2 3 3 3
Sample Output 2
15 7 0
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 500 点
問題文
整数 N が与えられます。
次の条件を全て満たす文字列 S としてあり得るものを 1 個出力してください。そのような文字列が存在しなければ -1
を出力してください。
- S は
1
,2
,3
,4
,5
,6
,7
,8
,9
および*
(乗算記号) からなる長さ 1 以上 1000 以下の文字列である。 - S は回文である。
- S の先頭の文字は数字である。
- S を式として評価した値が N と一致する。
制約
- 1 \leq N \leq 10^{12}
- N は整数
入力
入力は以下の形式で標準入力から与えられる。
N
出力
問題文の条件を満たす文字列が存在する場合はその文字列を、そうでない場合は -1
を出力せよ。
入力例 1
363
出力例 1
11*3*11
S = 11*3*11
は問題文の条件を満たします。他に条件を満たす文字列として S= 363
があります。
入力例 2
101
出力例 2
-1
S は 0
を含んではいけない点に注意してください。
入力例 3
3154625100
出力例 3
2*57*184481*75*2
Score : 500 points
Problem Statement
You are given an integer N. Print a string S that satisfies all of the following conditions. If no such string exists, print -1
.
- S is a string of length between 1 and 1000, inclusive, consisting of the characters
1
,2
,3
,4
,5
,6
,7
,8
,9
, and*
(multiplication symbol). - S is a palindrome.
- The first character of S is a digit.
- The value of S when evaluated as a formula equals N.
Constraints
- 1 \leq N \leq 10^{12}
- N is an integer.
Input
The input is given from Standard Input in the following format:
N
Output
If there is a string S that satisfies the conditions exists, print such a string. Otherwise, print -1
.
Sample Input 1
363
Sample Output 1
11*3*11
S = 11*3*11
satisfies the conditions in the problem statement. Another string that satisfies the conditions is S= 363
.
Sample Input 2
101
Sample Output 2
-1
Note that S must not contain the digit 0
.
Sample Input 3
3154625100
Sample Output 3
2*57*184481*75*2
Time Limit: 8 sec / Memory Limit: 1024 MB
配点 : 675 点
問題文
長さ N の数列 D=(D_1, D_2, \dots, D_N), P=(P_1, P_2, \dots, P_N) が与えられます。
Q 個のクエリを与えられる順に処理してください。クエリは以下の形式で与えられます。
c x y
: D_c を x に、P_c を y に変更する。そして、次の問題を解いて答えを出力する。
1 から N までの番号がついた N 個の仕事があります。
あなたは今日 (これを 1 日目とする) から 1 日あたり 1 個の仕事を選んで終わらせることを N 日間行います。
仕事 i は D_i 日目までに終わらせると P_i の報酬を貰えます。(D_i 日目までに終わらせなかった場合は何も無い)
仕事をやる順番を上手く選んだ時の報酬の総和の最大値を求めてください。
制約
- 1 \leq N \leq 10^5
- 1 \leq Q \leq 10^5
- 1 \leq D_i \leq N
- 1 \leq P_i \leq 10^9
- 1 \leq c \leq N
- 1 \leq x \leq N
- 1 \leq y \leq 10^9
- 入力される値は全て整数
入力
入力は以下の形式で標準入力から与えられる。ここで \mathrm{query}_i は i 番目のクエリを意味する。
N Q D_1 D_2 \dots D_N P_1 P_2 \dots P_N \mathrm{query}_1 \mathrm{query}_2 \vdots \mathrm{query}_Q
各クエリは以下の形式で与えられる。
c x y
出力
Q 行出力せよ。i 行目には i 番目のクエリの答えを出力せよ。
入力例 1
3 2 1 2 3 3 6 3 3 1 4 2 3 9
出力例 1
10 13
1 番目のクエリは次のようになります。
- D_3 を 1 に、P_3 を 4 に更新する。D = (1, 2, 1), P = (3, 6, 4) になる。
- 小問題では、1 日目に仕事 3 を、2 日目に仕事 2 を、3 日目に仕事 1 を行うという手順が最適な手順の 1 つで、この時の報酬の総和は 10 であるから、これを出力する。
2 番目のクエリは次のようになります。
- D_2 を 3 に、P_2 を 9 に更新する。D = (1, 3, 1), P = (3, 9, 4) になる。
- 小問題では、1 日目に仕事 3 を、2 日目に仕事 1 を、3 日目に仕事 2 を行うという手順が最適な手順の 1 つで、この時の報酬の総和は 13 であるから、これを出力する。
入力例 2
5 1 1 2 3 4 5 1000000000 1000000000 1000000000 1000000000 1000000000 1 1 1000000000
出力例 2
5000000000
入力例 3
10 10 6 2 4 1 5 1 6 6 5 3 45 65 71 52 86 52 48 60 40 98 5 6 5 8 4 34 6 7 83 1 3 21 7 5 85 7 4 51 8 2 81 2 7 54 6 1 5 8 6 30
出力例 3
394 379 462 457 459 414 443 479 401 396
Score : 675 points
Problem Statement
You are given two sequences of length N: D=(D_1, D_2, \dots, D_N) and P=(P_1, P_2, \dots, P_N).
Process Q queries in the order they are given. Each query is given in the following format:
c x y
: Change D_c to x and P_c to y. Then, solve the following problem and print the answer.
There are N jobs numbered 1 to N.
Starting from today (consider this as day 1), you will choose and complete one job per day for N days.
If you complete job i on or before day D_i, you will receive a reward of P_i. (If you do not complete it by day D_i, you get nothing.)
Find the maximum total reward you can achieve by choosing the optimal order of completing the jobs.
Constraints
- 1 \leq N \leq 10^5
- 1 \leq Q \leq 10^5
- 1 \leq D_i \leq N
- 1 \leq P_i \leq 10^9
- 1 \leq c \leq N
- 1 \leq x \leq N
- 1 \leq y \leq 10^9
- All input values are integers.
Input
The input is given from Standard Input in the following format. Here, \mathrm{query}_i denotes the i-th query.
N Q D_1 D_2 \dots D_N P_1 P_2 \dots P_N \mathrm{query}_1 \mathrm{query}_2 \vdots \mathrm{query}_Q
Each query is given in the following format.
c x y
Output
Print Q lines. The i-th line should contain the answer to the i-th query.
Sample Input 1
3 2 1 2 3 3 6 3 3 1 4 2 3 9
Sample Output 1
10 13
The first query is as follows:
- Update D_3 to 1 and P_3 to 4. Now, D = (1, 2, 1) and P = (3, 6, 4).
- In the subproblem, one optimal procedure is to complete job 3 on day 1, job 2 on day 2, and job 1 on day 3. The total reward is 10, so print 10.
The second query is as follows:
- Update D_2 to 3 and P_2 to 9. Now, D = (1, 3, 1) and P = (3, 9, 4).
- In the subproblem, one optimal procedure is to complete job 3 on day 1, job 1 on day 2, and job 2 on day 3. The total reward is 13, so print 13.
Sample Input 2
5 1 1 2 3 4 5 1000000000 1000000000 1000000000 1000000000 1000000000 1 1 1000000000
Sample Output 2
5000000000
Sample Input 3
10 10 6 2 4 1 5 1 6 6 5 3 45 65 71 52 86 52 48 60 40 98 5 6 5 8 4 34 6 7 83 1 3 21 7 5 85 7 4 51 8 2 81 2 7 54 6 1 5 8 6 30
Sample Output 3
394 379 462 457 459 414 443 479 401 396