Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 100 点
問題文
全長 100\;\mathrm{km} のマラソンコースがあります。 マラソンコースにはスタートから 5\;\mathrm{km} おきに給水所が設置されており、スタート地点・ゴール地点とあわせて 21 箇所の給水所があります。
高橋くんは、このマラソンコースの N\;\mathrm{km} 地点にいます。 高橋くんに最も近い給水所は何 \mathrm{km} 地点の給水所か求めてください。
この問題の制約のもとで、最も近い給水所が 1 つに定まることが証明できます。
制約
- 0\leq N\leq100
- N は整数
入力
入力は以下の形式で標準入力から与えられる。
N
出力
高橋くんがいる地点に最も近い給水所が何 \mathrm{km} 地点にあるかを 1 行で出力せよ。
入力例 1
53
出力例 1
55
高橋くんは、マラソンコースの 53\;\mathrm{km} 地点にいます。 55\;\mathrm{km} 地点の給水所までの距離は 2\;\mathrm{km} で、これより近い給水所はありません。 よって、55 を出力してください。
入力例 2
21
出力例 2
20
高橋くんはマラソンコースを戻ることもできます。
入力例 3
100
出力例 3
100
給水所はスタートやゴールにもあります。 また、高橋くんはすでに給水所にいることもあります。
Score : 100 points
Problem Statement
There is an ultramarathon course totaling 100\;\mathrm{km}. Water stations are set up every 5\;\mathrm{km} along the course, including the start and goal, for a total of 21.
Takahashi is at the N\;\mathrm{km} point of this course. Find the position of the nearest water station to him.
Under the constraints of this problem, it can be proven that the nearest water station is uniquely determined.
Constraints
- 0\leq N\leq100
- N is an integer.
Input
The input is given from Standard Input in the following format:
N
Output
Print the distance between the start and the water station nearest to Takahashi, in kilometers, in a single line.
Sample Input 1
53
Sample Output 1
55
Takahashi is at the 53\;\mathrm{km} point of the course. The water station at the 55\;\mathrm{km} point is 2\;\mathrm{km} away, and there is no closer water station. Therefore, you should print 55.
Sample Input 2
21
Sample Output 2
20
Takahashi could also go back the way.
Sample Input 3
100
Sample Output 3
100
There are also water stations at the start and goal. Additionally, Takahashi may already be at a water station.
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 200 点
問題文
直線上に 7 個の点 A, B, C, D, E, F, G がこの順に並んでいます。(下の図も参考にしてください)
隣り合う点の距離は次の通りです。
- 点 A と点 B の距離は 3
- 点 B と点 C の距離は 1
- 点 C と点 D の距離は 4
- 点 D と点 E の距離は 1
- 点 E と点 F の距離は 5
- 点 F と点 G の距離は 9
2 つの英大文字 p, q が与えられます。p, q は A
,B
,C
,D
,E
,F
,G
のいずれかで、 p \neq q が成り立ちます。
点 p と点 q の間の距離を答えてください。
制約
- p, q は
A
,B
,C
,D
,E
,F
,G
のいずれか - p \neq q
入力
入力は以下の形式で標準入力から与えられる。
p q
出力
点 p と点 q の間の距離を出力せよ。
入力例 1
A C
出力例 1
4
点 A と点 C の距離は 3 + 1 = 4 です。
入力例 2
G B
出力例 2
20
点 G と点 B の距離は 9 + 5 + 1 + 4 + 1 = 20 です。
入力例 3
C F
出力例 3
10
Score : 200 points
Problem Statement
There are 7 points A, B, C, D, E, F, and G on a straight line, in this order. (See also the figure below.)
The distances between adjacent points are as follows.
- Between A and B: 3
- Between B and C: 1
- Between C and D: 4
- Between D and E: 1
- Between E and F: 5
- Between F and G: 9
You are given two uppercase English letters p and q. Each of p and q is A
, B
, C
, D
, E
, F
, or G
, and it holds that p \neq q.
Find the distance between the points p and q.
Constraints
- Each of p and q is
A
,B
,C
,D
,E
,F
, orG
. - p \neq q
Input
The input is given from Standard Input in the following format:
p q
Output
Print the distance between the points p and q.
Sample Input 1
A C
Sample Output 1
4
The distance between the points A and C is 3 + 1 = 4.
Sample Input 2
G B
Sample Output 2
20
The distance between the points G and B is 9 + 5 + 1 + 4 + 1 = 20.
Sample Input 3
C F
Sample Output 3
10
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 300 点
問題文
縦 H マス, 横 W マスのグリッドがあります。上から i 行目、左から j 列目のマスを (i, j) と呼びます。
はじめ、グリッド上には、ある 縦横 2 マス以上 の部分長方形の内部にあるマスにクッキーが 1 枚ずつ置かれていて、それ以外のマスにはクッキーが置かれていません。
形式的に説明すると、以下の条件を全て満たす 4 つの整数の組 (a,b,c,d) がただ 1 つ存在します。
- 1 \leq a \lt b \leq H
- 1 \leq c \lt d \leq W
- グリッド上のマスのうち、a \leq i \leq b, c \leq j \leq d を満たす全てのマス (i, j) にはクッキーが 1 枚ずつ置かれていて、それ以外のマスにはクッキーが置かれていない。
ところが、すぬけ君がグリッド上のクッキーのどれか 1 枚を取って食べてしまいました。
すぬけ君がクッキーを取ったマスは、クッキーが置かれていない状態に変わります。
すぬけ君がクッキーを食べた後のグリッドの状態が入力として与えられます。
マス (i, j) の状態は文字 S_{i,j} として与えられて、#
はクッキーが置かれているマスを, .
はクッキーが置かれていないマスを意味します。
すぬけ君が食べたクッキーが元々置かれていたマスを答えてください。(答えは一意に定まります。)
制約
- 2 \leq H, W \leq 500
- S_{i,j} は
#
または.
入力
入力は以下の形式で標準入力から与えられる。
H W S_{1,1}S_{1,2}\dotsS_{1,W} S_{2,1}S_{2,2}\dotsS_{2,W} \vdots S_{H,1}S_{H,2}\dotsS_{H,W}
出力
すぬけ君が食べたクッキーが元々置かれていたマスを (i, j) とする。i, j をこの順に空白区切りで出力せよ。
入力例 1
5 6 ...... ..#.#. ..###. ..###. ......
出力例 1
2 4
はじめ、クッキーは (2, 3) を左上、(4, 5) を右下とする部分長方形の内部にあるマスに置かれていて、すぬけ君は (2, 4) にあるクッキーを食べたことがわかります。よって (2, 4) を出力します。
入力例 2
3 2 #. ## ##
出力例 2
1 2
はじめ、クッキーは (1, 1) を左上、(3, 2) を右下とする部分長方形の内部にあるマスに置かれていて、すぬけ君は (1, 2) にあるクッキーを食べたことがわかります。
入力例 3
6 6 ..#### ..##.# ..#### ..#### ..#### ......
出力例 3
2 5
Score : 300 points
Problem Statement
There is a grid with H rows and W columns. Let (i, j) denote the square at the i-th row from the top and the j-th column from the left.
Initially, there was one cookie on each square inside a rectangle whose height and width were at least 2 squares long, and no cookie on the other squares.
Formally, there was exactly one quadruple of integers (a,b,c,d) that satisfied all of the following conditions.
- 1 \leq a \lt b \leq H
- 1 \leq c \lt d \leq W
- There was one cookie on each square (i, j) such that a \leq i \leq b, c \leq j \leq d, and no cookie on the other squares.
However, Snuke took and ate one of the cookies on the grid.
The square that contained that cookie is now empty.
As the input, you are given the state of the grid after Snuke ate the cookie.
The state of the square (i, j) is given as the character S_{i,j}, where #
means a square with a cookie, and .
means a square without one.
Find the square that contained the cookie eaten by Snuke. (The answer is uniquely determined.)
Constraints
- 2 \leq H, W \leq 500
- S_{i,j} is
#
or.
.
Input
The input is given from Standard Input in the following format:
H W S_{1,1}S_{1,2}\dotsS_{1,W} S_{2,1}S_{2,2}\dotsS_{2,W} \vdots S_{H,1}S_{H,2}\dotsS_{H,W}
Output
Let (i, j) the square contained the cookie eaten by Snuke. Print i and j in this order, separated by a space.
Sample Input 1
5 6 ...... ..#.#. ..###. ..###. ......
Sample Output 1
2 4
Initially, cookies were on the squares inside the rectangle with (2, 3) as the top-left corner and (4, 5) as the bottom-right corner, and Snuke ate the cookie on (2, 4). Thus, you should print (2, 4).
Sample Input 2
3 2 #. ## ##
Sample Output 2
1 2
Initially, cookies were placed on the squares inside the rectangle with (1, 1) as the top-left corner and (3, 2) as the bottom-right corner, and Snuke ate the cookie at (1, 2).
Sample Input 3
6 6 ..#### ..##.# ..#### ..#### ..#### ......
Sample Output 3
2 5
Time Limit: 3 sec / Memory Limit: 1024 MB
配点 : 450 点
問題文
高橋くんは睡眠記録をつけています。 睡眠記録は奇数長の数列 A=(A _ 1(=0), A _ 2,\ldots,A _ N) で表され、奇数番目は起床時刻を、偶数番目は就寝時刻を表しています。 より厳密には、睡眠記録をつけている間に高橋くんは次のような睡眠をとりました。
- すべての 1\leq i\leq\dfrac{N-1}2 を満たす整数 i について、睡眠記録をつけ始めてから A _ {2i} 分後ちょうどに寝て、A _ {2i+1} 分後ちょうどに起きた。
- それ以外の時間に寝ることも起きることもなかった。
次の Q 個の質問に答えてください。 i 番目の質問では、0\leq l _ i\leq r _ i\leq A _ N を満たす整数の組 (l _ i,r _ i) が与えられます。
- 睡眠記録をつけ始めてから l _ i 分後ちょうどから r _ i 分後ちょうどまでの r _ i-l _ i 分のうち、高橋くんが寝ていたのは何分間ですか?
制約
- 3\leq N\lt2\times10^5
- N は奇数
- 0=A _ 1\lt A _ 2\lt\cdots\lt A _ N\leq10^9
- 1\leq Q\leq2\times10^5
- 0\leq l _ i\leq r _ i\leq A _ N\ (1\leq i\leq Q)
- 入力はすべて整数
入力
入力は以下の形式で標準入力から与えられる。
N A _ 1 A _ 2 \ldots A _ N Q l _ 1 r _ 1 l _ 2 r _ 2 \vdots l _ Q r _ Q
出力
答えを Q 行で出力せよ。 i 行目には i 番目の質問の答えを整数として出力せよ。
入力例 1
7 0 240 720 1320 1440 1800 2160 3 480 1920 720 1200 0 2160
出力例 1
480 0 960
高橋くんは、以下の図のように睡眠をとりました。
それぞれの質問の答えは以下のようになります。
- 睡眠記録をつけ始めてから 480 分後から 1920 分後の間、高橋くんは 480 分後から 720 分後、1320 分後から 1440 分後、1800 分後から 1920 分後の 3 つの睡眠をとりました。睡眠時間の合計は 240+120+120=480 分です。
- 睡眠記録をつけ始めてから 720 分後から 1200 分後の間、高橋くんは睡眠をとりませんでした。睡眠時間の合計は 0 分です。
- 睡眠記録をつけ始めてから 0 分後から 2160 分後の間、高橋くんは 240 分後から 720 分後、1320 分後から 1440 分後、1800 分後から 2160 分後の 3 つの睡眠をとりました。睡眠時間の合計は 480+120+360=960 分です。
よって、それぞれの行に 480,0,960 と出力してください。
入力例 2
21 0 20 62 192 284 310 323 324 352 374 409 452 486 512 523 594 677 814 838 946 1000 10 77 721 255 541 478 970 369 466 343 541 42 165 16 618 222 592 730 983 338 747
出力例 2
296 150 150 49 89 20 279 183 61 177
Score : 450 points
Problem Statement
Takahashi keeps a sleep log. The log is represented as an odd-length sequence A=(A _ 1(=0), A _ 2,\ldots,A _ N), where odd-numbered elements represent times he got up, and even-numbered elements represent times he went to bed. More formally, he had the following sleep sessions after starting the sleep log.
- For every integer i such that 1\leq i\leq\dfrac{N-1}2, he fell asleep exactly A _ {2i} minutes after starting the sleep log and woke up exactly A _ {2i+1} minutes after starting the sleep log.
- He did not fall asleep or wake up at any other time.
Answer the following Q questions. For the i-th question, you are given a pair of integers (l _ i,r _ i) such that 0\leq l _ i\leq r _ i\leq A _ N.
- What is the total number of minutes for which Takahashi was asleep during the r _ i-l _ i minutes from exactly l _ i minutes to r _ i minutes after starting the sleep log?
Constraints
- 3\leq N\lt2\times10^5
- N is odd.
- 0=A _ 1\lt A _ 2\lt\cdots\lt A _ N\leq10^9
- 1\leq Q\leq2\times10^5
- 0\leq l _ i\leq r _ i\leq A _ N\ (1\leq i\leq Q)
- All input values are integers.
Input
The input is given from Standard Input in the following format:
N A _ 1 A _ 2 \ldots A _ N Q l _ 1 r _ 1 l _ 2 r _ 2 \vdots l _ Q r _ Q
Output
Print the answer in Q lines. The i-th line should contain an integer answering to the i-th question.
Sample Input 1
7 0 240 720 1320 1440 1800 2160 3 480 1920 720 1200 0 2160
Sample Output 1
480 0 960
Takahashi slept as shown in the following figure.
The answers to each question are as follows.
- Between 480 minutes and 1920 minutes after starting the sleep log, Takahashi slept from 480 minutes to 720 minutes, from 1320 minutes to 1440 minutes, and from 1800 minutes to 1920 minutes in 3 sleep sessions. The total sleep time is 240+120+120=480 minutes.
- Between 720 minutes and 1200 minutes after starting the sleep log, Takahashi did not sleep. The total sleep time is 0 minutes.
- Between 0 minutes and 2160 minutes after starting the sleep log, Takahashi slept from 240 minutes to 720 minutes, from 1320 minutes to 1440 minutes, and from 1800 minutes to 2160 minutes in 3 sleep sessions. The total sleep time is 480+120+360=960 minutes.
Therefore, the three lines of the output should contain 480, 0, and 960.
Sample Input 2
21 0 20 62 192 284 310 323 324 352 374 409 452 486 512 523 594 677 814 838 946 1000 10 77 721 255 541 478 970 369 466 343 541 42 165 16 618 222 592 730 983 338 747
Sample Output 2
296 150 150 49 89 20 279 183 61 177
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 475 点
問題文
頂点に 1 から N の、辺に 1 から M の番号がついた N 頂点 M 辺の単純無向グラフがあります。辺 i は頂点 a_i と頂点 b_i を結んでいます。
1 から K までの番号がついた K 人の警備員が頂点上にいます。警備員 i は頂点 p_i にいて、体力は h_i です。ここで全ての p_i は互いに異なります。
頂点 v が次の条件を満たす時、頂点 v を 警備されている頂点 と呼びます。
- 頂点 v と頂点 p_i の距離が h_i 以下であるような警備員 i が少なくとも 1 人存在する。
ここで、頂点 u と頂点 v の距離とは、頂点 u と頂点 v を結ぶパスに含まれる辺の本数の最小値のことをいいます。
グラフに含まれる頂点のうち、警備されている頂点を 小さい方から順に 全て列挙してください。
制約
- 1 \leq N \leq 2 \times 10^5
- 0 \leq M \leq \min \left(\frac{N(N-1)}{2}, 2 \times 10^5 \right)
- 1 \leq K \leq N
- 1 \leq a_i, b_i \leq N
- 入力で与えられるグラフは単純
- 1 \leq p_i \leq N
- p_i は互いに異なる
- 1 \leq h_i \leq N
- 入力で与えられる値は全て整数
入力
入力は以下の形式で標準入力から与えられる。
N M K a_1 b_1 a_2 b_2 \vdots a_M b_M p_1 h_1 p_2 h_2 \vdots p_K h_K
出力
答えを以下の形式で出力せよ。ここで、
- 警備されている頂点の個数を G 、
- 警備されている頂点の頂点番号を 昇順に 並べたものを v_1, v_2, \dots, v_G
と定義する。
G v_1 v_2 \dots v_G
入力例 1
5 5 2 1 2 2 3 2 4 3 5 1 5 1 1 5 2
出力例 1
4 1 2 3 5
警備されている頂点は 1, 2, 3, 5 の 4 頂点です。
これらの頂点が警備されている頂点である理由は以下の通りです。
- 頂点 1 と頂点 p_1 = 1 の距離は 0 で、これは h_1 = 1 以下です。よって頂点 1 は警備されている頂点です。
- 頂点 2 と頂点 p_1 = 1 の距離は 1 で、これは h_1 = 1 以下です。よって頂点 2 は警備されている頂点です。
- 頂点 3 と頂点 p_2 = 5 の距離は 1 で、これは h_2 = 2 以下です。よって頂点 3 は警備されている頂点です。
- 頂点 5 と頂点 p_1 = 1 の距離は 1 で、これは h_1 = 1 以下です。よって頂点 5 は警備されている頂点です。
入力例 2
3 0 1 2 3
出力例 2
1 2
入力で与えられるグラフに辺がない場合もあります。
入力例 3
10 10 2 2 1 5 1 6 1 2 4 2 5 2 10 8 5 8 6 9 6 7 9 3 4 8 2
出力例 3
7 1 2 3 5 6 8 9
Score : 475 points
Problem Statement
There is a simple undirected graph with N vertices and M edges, where vertices are numbered from 1 to N, and edges are numbered from 1 to M. Edge i connects vertex a_i and vertex b_i.
K security guards numbered from 1 to K are on some vertices. Guard i is on vertex p_i and has a stamina of h_i. All p_i are distinct.
A vertex v is said to be guarded when the following condition is satisfied:
- there is at least one guard i such that the distance between vertex v and vertex p_i is at most h_i.
Here, the distance between vertex u and vertex v is the minimum number of edges in the path connecting vertices u and v.
List all guarded vertices in ascending order.
Constraints
- 1 \leq N \leq 2 \times 10^5
- 0 \leq M \leq \min \left(\frac{N(N-1)}{2}, 2 \times 10^5 \right)
- 1 \leq K \leq N
- 1 \leq a_i, b_i \leq N
- The given graph is simple.
- 1 \leq p_i \leq N
- All p_i are distinct.
- 1 \leq h_i \leq N
- All input values are integers.
Input
The input is given from Standard Input in the following format:
N M K a_1 b_1 a_2 b_2 \vdots a_M b_M p_1 h_1 p_2 h_2 \vdots p_K h_K
Output
Print the answer in the following format. Here,
- G is the number of guarded vertices,
- and v_1, v_2, \dots, v_G are the vertex numbers of the guarded vertices in ascending order.
G v_1 v_2 \dots v_G
Sample Input 1
5 5 2 1 2 2 3 2 4 3 5 1 5 1 1 5 2
Sample Output 1
4 1 2 3 5
The guarded vertices are 1, 2, 3, 5.
These vertices are guarded because of the following reasons.
- The distance between vertex 1 and vertex p_1 = 1 is 0, which is not greater than h_1 = 1. Thus, vertex 1 is guarded.
- The distance between vertex 2 and vertex p_1 = 1 is 1, which is not greater than h_1 = 1. Thus, vertex 2 is guarded.
- The distance between vertex 3 and vertex p_2 = 5 is 1, which is not greater than h_2 = 2. Thus, vertex 3 is guarded.
- The distance between vertex 5 and vertex p_1 = 1 is 1, which is not greater than h_1 = 1. Thus, vertex 5 is guarded.
Sample Input 2
3 0 1 2 3
Sample Output 2
1 2
The given graph may have no edges.
Sample Input 3
10 10 2 2 1 5 1 6 1 2 4 2 5 2 10 8 5 8 6 9 6 7 9 3 4 8 2
Sample Output 3
7 1 2 3 5 6 8 9
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 525 点
問題文
この問題は インタラクティブな問題(あなたが作成したプログラムとジャッジプログラムが標準入出力を介して対話を行う形式の問題)です。
N 個の頂点と M 本の辺からなる連結かつ単純な無向グラフがあります。 頂点には 1 から N までの整数の番号がついています。
あなたは、はじめ頂点 1 にいます。 隣り合う頂点に移動することを最大 2N 回まで繰り返して、頂点 N へ移動してください。
ただし、はじめはグラフの辺をすべて知ることはできず、今いる頂点と隣り合っている頂点の情報を知ることができます。
制約
- 2\leq N\leq100
- N-1\leq M\leq\dfrac{N(N-1)}2
- グラフは連結かつ単純
- 入力はすべて整数
入出力
最初に、グラフの頂点数 N と辺数 M を標準入力から受け取ってください。
N M
次に、あなたはジャッジに対して問題文中の操作を 2N 回まで繰り返すことができます。
各操作のはじめには、あなたが現在いる頂点に隣接する頂点が次の形式で標準入力から与えられます。
k v _ 1 v _ 2 \ldots v _ k
ここで、v _ i\ (1\leq i\leq k) は 1 以上 N 以下の整数で、v _ 1\lt v _ 2\lt\cdots\lt v _ k を満たします。
あなたは、v _ i\ (1\leq i\leq k) を 1 つ選んで以下の形式で標準出力へ出力してください。
v _ i
この操作をすることで、あなたは頂点 v _ i へ移動します。
移動回数が 2N 回を上回ったり、不正な出力を行った場合、ジャッジは標準入力に -1
を送ります。
移動する先の頂点が頂点 N である場合、ジャッジは標準入力に OK
を送り、終了します。
-1
もしくは OK
を受け取った場合、ただちにあなたのプログラムを終了させてください。
注意点
- 出力を行うたびに、末尾に改行を入れて標準出力を flush してください。そうしなかった場合、ジャッジ結果が TLE となる可能性があります。
- 対話の途中で不正な出力を行った、あるいはプログラムが途中で終了した場合のジャッジ結果は不定です。
- 頂点 N に到達したらただちにプログラムを終了してください。そうしない場合、ジャッジ結果は不定です。
- この問題のジャッジはアダプティブです。つまり、制約および以前の出力に矛盾しない範囲でグラフの形が変わる場合があります。
入出力例
以下は、N=4,M=5 の場合の入出力例です。 この入出力では、グラフは以下の図のようになっています。
入力 | 出力 | 説明 |
---|---|---|
4 5 |
N と M が与えられます。 | |
2 2 3 |
はじめ、あなたは頂点 1 にいます。頂点 1 に隣接している頂点が与えられます。 | |
3 |
移動する頂点として、頂点 v _ 2=3 を選びます。 | |
3 1 2 4 |
頂点 3 に隣接している頂点が与えられます。 | |
2 |
移動する頂点として、頂点 v _ 2=2 を選びます。 | |
3 1 3 4 |
頂点 2 に隣接している頂点が与えられます。 | |
4 |
移動する頂点として、頂点 v _ 3=4 を選びます。 | |
OK |
8(=2\times4) 回以内で頂点 4 に到達したので、OK が渡されます。 |
OK
を受け取ったあと、ただちにプログラムを終了することで正解と判定されます。
Score : 525 points
Problem Statement
This is an interactive problem (where your program and the judge program interact through Standard Input and Output).
There is a simple connected undirected graph with N vertices and M edges. The vertices are numbered with integers from 1 to N.
Initially, you are at vertex 1. Repeat moving to an adjacent vertex at most 2N times to reach vertex N.
Here, you do not initially know all edges of the graph, but you will be informed of the vertices adjacent to the vertex you are at.
Constraints
- 2\leq N\leq100
- N-1\leq M\leq\dfrac{N(N-1)}2
- The graph is simple and connected.
- All input values are integers.
Input and Output
First, receive the number of vertices N and the number of edges M in the graph from Standard Input:
N M
Next, you get to repeat the operation described in the problem statement at most 2N times against the judge.
At the beginning of each operation, the vertices adjacent to the vertex you are currently at are given from Standard Input in the following format:
k v _ 1 v _ 2 \ldots v _ k
Here, v _ i\ (1\leq i\leq k) are integers between 1 and N such that v _ 1\lt v _ 2\lt\cdots\lt v _ k.
Choose one of v _ i\ (1\leq i\leq k) and print it to Standard Output in the following format:
v _ i
After this operation, you will be at vertex v _ i.
If you perform more than 2N operations or print invalid output, the judge will send -1
to Standard Input.
If the destination of a move is vertex N, the judge will send OK
to Standard Input and terminate.
When receiving -1
or OK
, immediately terminate the program.
Notes
- In each output, insert a newline at the end and flush Standard Output. Otherwise, the verdict may be TLE.
- The verdict will be indeterminate if the program prints invalid output or quits prematurely in the middle of the interaction.
- Terminate the program immediately after reaching vertex N. Otherwise, the verdict will be indeterminate.
- The judge for this problem is adaptive. This means that the graph may change without contradicting the constraints or previous outputs.
Sample Interaction
In the following sample interaction, we have N=4, M=5, and the graph in the figure below.
Input | Output | Description |
---|---|---|
4 5 |
N and M are given. | |
2 2 3 |
You start at vertex 1. The vertices adjacent to vertex 1 are given. | |
3 |
You choose to go to vertex v _ 2=3. | |
3 1 2 4 |
The vertices adjacent to vertex 3 are given. | |
2 |
You choose to go to vertex v _ 2=2. | |
3 1 3 4 |
The vertices adjacent to vertex 2 are given. | |
4 |
You choose to go to vertex v _ 3=4. | |
OK |
Since you have reached vertex 4 within 8(=2\times4) moves, OK is passed. |
You will be judged as correct if you immediately terminate the program after receiving OK
.
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 550 点
問題文
a
, b
からなる長さ 6 以下の空でない文字列の集合 S=\lbrace s _ 1,s _ 2,\ldots,s _ M\rbrace が与えられます。
以下の条件を満たす a
, b
からなる長さ N の文字列 T はいくつあるか求めてください。
- 任意の s _ i\in S に対して、T は s _ i を連続する部分文字列として含まない
ただし、答えは非常に大きくなる可能性があるので、答えを 998244353 で割った余りを求めてください。
制約
- 1\leq N\leq10^{18}
- 1\leq M\leq126
- N,M は整数
- s _ i は
a
,b
からなる長さ 6 以下の空でない文字列 - s _ i\neq s _ j\ (1\leq i\lt j\leq M)
入力
入力は以下の形式で標準入力から与えられる。
N M s _ 1 s _ 2 \vdots s _ M
出力
答えを 998244353 で割ったあまりを 1 行で出力せよ。
入力例 1
4 3 aab bbab abab
出力例 1
10
a
, b
からなる長さ 4 の文字列で、連続する部分列として aab
, bbab
, abab
をもたないようなものは
aaaa
, abaa
, abba
, abbb
, baaa
, baba
, babb
, bbaa
, bbba
, bbbb
の 10 個なので、10 を出力してください。
入力例 2
20 1 aa
出力例 2
17711
入力例 3
1000000007 28 bbabba bbbbaa aabbab bbbaba baaabb babaab bbaaba aabaaa aaaaaa aabbaa bbaaaa bbaabb bbabab aababa baaaba ababab abbaba aabaab ababaa abbbba baabaa aabbbb abbbab baaaab baabbb ababbb baabba abaaaa
出力例 3
566756841
998244353 で割ったあまりを出力してください。
Score : 550 points
Problem Statement
You are given a set S=\lbrace s _ 1,s _ 2,\ldots,s _ M\rbrace of non-empty strings of length at most 6 consisting of a
and b
.
Find the number of strings T of length N consisting of a
and b
that satisfy the following condition:
- T does not contain s _ i as a consecutive substring for any s _ i\in S.
Since the answer can be enormous, find it modulo 998244353.
Constraints
- 1\leq N\leq10^{18}
- 1\leq M\leq126
- N and M are integers.
- s _ i is a non-empty string of length at most 6 consisting of
a
andb
. - s _ i\neq s _ j\ (1\leq i\lt j\leq M)
Input
The input is given from Standard Input in the following format:
N M s _ 1 s _ 2 \vdots s _ M
Output
Print the answer modulo 998244353 in a single line.
Sample Input 1
4 3 aab bbab abab
Sample Output 1
10
There are 10 strings of length 4 consisting of a
and b
that do not contain aab
, bbab
, or abab
as consecutive substrings: aaaa
, abaa
, abba
, abbb
, baaa
, baba
, babb
, bbaa
, bbba
, and bbbb
. Thus, you should print 10.
Sample Input 2
20 1 aa
Sample Output 2
17711
Sample Input 3
1000000007 28 bbabba bbbbaa aabbab bbbaba baaabb babaab bbaaba aabaaa aaaaaa aabbaa bbaaaa bbaabb bbabab aababa baaaba ababab abbaba aabaab ababaa abbbba baabaa aabbbb abbbab baaaab baabbb ababbb baabba abaaaa
Sample Output 3
566756841
Print the answer modulo 998244353.
Time Limit: 3 sec / Memory Limit: 1024 MB
配点 : 650 点
問題文
あなたは 精進 をすることにしました。精進とは、AtCoder の問題を大量に解くことをいいます。
精進は何日か掛けて行われます。1 日における精進は次の手順で行われます。
- その日に M 問の問題を解くとする。各問題には非負整数対 (A, B) が 難易度 と呼ばれる値としてついている。
- まず、M 問を自由な順番に並べ替える。そして、並び替えた後の順に問題を 1 問ずつ解いていく。
- あなたは 疲労度 という値を持っている。1 日のはじめの疲労度は 0 であり、難易度が (A, B) である問題を解くごとに疲労度が x から Ax + B に変化する。
- M 問すべて解いた時点での疲労度を、その日の 消費した体力 と呼ぶ。
N 問の AtCoder の問題が並んでいて、順に問題 1, 問題 2, \dots, 問題 N と呼びます。問題 i の難易度は (A_i, B_i) です。
あなたは精進を行うことで N 問の問題を全て解くことにしました。
精進は次の手順で行います。以下では問題 L, 問題 L+1, ..., 問題 R からなる問題の列を [L, R] と呼びます。
- 1 以上 N 以下の整数 K を自由に選ぶ。精進する日数を K 日とする。
- N 問の問題の列を、K 個の非空な連続部分列に分割して、前から i 番目の列を S_i とする。
形式的に説明すると、狭義単調増加な非負整数列 x_0, x_1, \dots, x_K のうち 1 = x_0 かつ x_K = N + 1 を満たすものを 1 つ選び、1 \leq i \leq K について S_i = [x_{i-1}, x_i - 1] とする。 - そして、i=1, 2, \dots, K について、 i 日目の精進では S_i に含まれる問題全てを解く。
あなたは、精進全体での消費した体力の総和が X 以下になるように精進をすることにしました。
このような精進の日数 K として取り得る最小の値を D とします。(ここで X について、\sum_{i = 1}^N B_i \leq X が保証されています。この制約下において条件を満たす D は必ず存在します。)
また、K=D である精進において、精進全体での消費した体力の総和として取り得る最小の値を M とします。
D および M を求めてください。
制約
- 1 \leq N \leq 2 \times 10^5
- 1 \leq X \leq 10^8
- 1 \leq A_i \leq 10^5
- 1 \leq B_i
- \sum_{i=1}^N B_i \leq X
- 入力される値は全て整数
入力
入力は以下の形式で標準入力から与えられる。
N X A_1 B_1 A_2 B_2 \vdots A_N B_N
出力
D および M を空白区切りで出力せよ。
入力例 1
3 100 2 2 3 4 5 7
出力例 1
1 52
このテストケースでは X に関する条件を満たしながら 1 日で全ての問題を解くことが可能です。
以下の手順で精進を行うことで、精進全体での消費した体力は 52 になり、これが最小です。
- K=1 として、1 日目に [1, 3] を解くとする。
- 1 日目の精進は以下の手順で行う。
- 問題を (問題 3, 問題 2, 問題 1) の順に並べる。
- はじめ、疲労度は 0 である。
- 問題 3 を解く。疲労度は 5 \times 0 + 7 = 7 に変化する。
- 問題 2 を解く。疲労度は 3 \times 7 + 4 = 25 に変化する。
- 問題 1 を解く。疲労度は 2 \times 25 + 2 = 52 に変化する。
- 全ての問題を解いた時点での疲労度は 52 である。よってこの日の消費した体力は 52 となる。
- 精進全体での消費した体力の総和もまた 52 である。
入力例 2
3 30 2 2 3 4 5 7
出力例 2
2 17
このテストケースは、1 番目のテストケースの X を 100 から 30 に変えたものです。よって、 X に関する条件を満たしながら 1 日で全ての問題を解くことは不可能です。
以下の手順に従って精進を 2 日間行うことで M=17 を達成できます。
- K = 2 として、1 日目に [1, 2], 2 日目に [3, 3] を解くとする。
- 1 日目の精進は以下の手順で行う。
- 問題を (問題 1, 問題 2) の順に並べる。
- はじめ、疲労度は 0 である。
- 問題 1 を解く。疲労度は 2 \times 0 + 2 = 2 に変化する。
- 問題 2 を解く。疲労度は 3 \times 2 + 4 = 10 に変化する。
- 全ての問題を解いた時点での疲労度は 10 である。よって 1 日目の消費した体力は 10 となる。
- 2 日目の精進は以下の手順で行う。
- 問題を (問題 3) の順に並べる。
- はじめ、疲労度は 0 である。
- 問題 3 を解く。疲労度は 5 \times 0 + 7 = 7 に変化する。
- 全ての問題を解いた時点での疲労度は 7 である。よって 2 日目の消費した体力は 7 となる。
- 精進全体での消費した体力の総和は 10 + 7 = 17 である。
入力例 3
5 50000000 100000 10000000 100000 10000000 100000 10000000 100000 10000000 100000 10000000
出力例 3
5 50000000
1 日 1 問ずつ解いていく精進が答えとなります。
入力例 4
10 100000000 5 88 66 4 52 1 3 1 12 1 53 25 11 12 12 2 1 20 47 10
出力例 4
2 73647
入力例 5
15 100000000 2387 3178 2369 5772 1 29 36 3 52 2981 196 1 36 704 3 3 1501 5185 23 628 3623 810 80 101 6579 15 681 7 183 125
出力例 5
4 54468135
Score : 650 points
Problem Statement
You have decided to practice. Practice means solving a large number of problems in AtCoder.
Practice takes place over several days. The practice for one day is carried out in the following steps.
- Let M be the number of problems to be solved on that day. Each problem has a value called difficulty, which is a pair of non-negative integers (A, B).
- First, rearrange the M problems in any order. Then, solve the problems one by one in that order.
- You have a value called fatigue. The fatigue at the beginning of the day is 0, and it changes from x to Ax + B when solving a problem with difficulty (A, B).
- The fatigue at the end of solving all M problems is called the energy consumed for that day.
There is a sequence of N problems in AtCoder, called problem 1, problem 2, \dots, problem N in order. The difficulty of problem i is (A_i, B_i).
You have decided to solve all N problems through practice.
Practice is carried out in the following steps. Below, let [L, R] denote the following sequence of problems: problem L, problem L+1, ..., problem R.
- Choose an integer K freely between 1 and N, inclusive. The practice will last K days.
- Divide the sequence of N problems into K non-empty continuous subsequences, and let S_i be the i-th sequence.
Formally, choose a strictly increasing non-negative integer sequence x_0, x_1, \dots, x_K such that 1 = x_0 and x_K = N + 1, and let S_i = [x_{i-1}, x_i - 1] for 1 \leq i \leq K. - Then, for i=1, 2, \dots, K, solve all problems in S_i on the i-th day of practice.
You have decided to practice so that the total energy consumed throughout the practice is at most X.
Let D be the minimum possible value of K, the number of days, for such a practice. (Here, it is guaranteed that \sum_{i = 1}^N B_i \leq X. Under this constraint, such D always exists.)
Also, let M be the minimum possible total energy consumed throughout a practice such that K=D.
Find D and M.
Constraints
- 1 \leq N \leq 2 \times 10^5
- 1 \leq X \leq 10^8
- 1 \leq A_i \leq 10^5
- 1 \leq B_i
- \sum_{i=1}^N B_i \leq X
- All input values are integers.
Input
The input is given from Standard Input in the following format:
N X A_1 B_1 A_2 B_2 \vdots A_N B_N
Output
Print D and M separated by a space.
Sample Input 1
3 100 2 2 3 4 5 7
Sample Output 1
1 52
In this test case, you can solve all problems in one day while satisfying the condition for X.
By following the steps below, the total energy consumed during the practice will be 52, which is the minimum.
- Set K=1 and solve [1, 3] on the first day.
- Carry out the practice on the first day in the following steps.
- Arrange the problems in the order (problem 3, problem 2, problem 1).
- Initially, the fatigue is 0.
- Solve problem 3. The fatigue changes to 5 \times 0 + 7 = 7.
- Solve problem 2. The fatigue changes to 3 \times 7 + 4 = 25.
- Solve problem 1. The fatigue changes to 2 \times 25 + 2 = 52.
- The fatigue at the end of solving all problems is 52. Therefore, the energy consumed on this day is 52.
- The total energy consumed throughout the practice is also 52.
Sample Input 2
3 30 2 2 3 4 5 7
Sample Output 2
2 17
This test case is obtained by changing X from 100 to 30 in the first test case. Therefore, it is impossible to solve all problems in one day while satisfying the condition for X.
By following the steps below, you can achieve M=17 by practicing for two days.
- Set K = 2, and solve [1, 2] on the first day and [3, 3] on the second day.
- Carry out the practice on the first day in the following steps.
- Arrange the problems in the order (problem 1, problem 2).
- Initially, the fatigue is 0.
- Solve problem 1. The fatigue changes to 2 \times 0 + 2 = 2.
- Solve problem 2. The fatigue changes to 3 \times 2 + 4 = 10.
- The fatigue at the end of solving all problems is 10. Therefore, the energy consumed on the first day is 10.
- Carry out the practice on the second day in the following steps.
- Arrange the problems in the order (problem 3).
- Initially, the fatigue is 0.
- Solve problem 3. The fatigue changes to 5 \times 0 + 7 = 7.
- The fatigue at the end of solving all problems is 7. Therefore, the energy consumed on the second day is 7.
- The total energy consumed throughout the practice is 10 + 7 = 17.
Sample Input 3
5 50000000 100000 10000000 100000 10000000 100000 10000000 100000 10000000 100000 10000000
Sample Output 3
5 50000000
The optimal practice is to solve one problem per day.
Sample Input 4
10 100000000 5 88 66 4 52 1 3 1 12 1 53 25 11 12 12 2 1 20 47 10
Sample Output 4
2 73647
Sample Input 5
15 100000000 2387 3178 2369 5772 1 29 36 3 52 2981 196 1 36 704 3 3 1501 5185 23 628 3623 810 80 101 6579 15 681 7 183 125
Sample Output 5
4 54468135