Codeforces Round #707 (Div. 2) 問題文和訳
- A. Alexey and Train / Леша и поезд (500点)
- B. Napoleon Cake / Торт Наполеон (1000点)
- C. Going Home / Поеду домой (1750点)
- D. Two chandeliers / Две люстры (1750点)
- E. Matrix Sorting / Сортировка матрицы (2500点)
- F. Tiles for Bathroom / Плитка для ванной (3000点)
A. Alexey and Train / Леша и поезд (500点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
Лешаは鉄道ターミナル駅で電車に乗りました。この電車は時刻 に他0美成駅を出発するとします。また、この電車は途中で から の番号が付いた 駅を順に訪れ、Лешаの目的地は駅 であるとします。
Лешаは時刻表から 個の整数の組 を知りました、ここで は電車が 番目の駅に着く見込み時刻で、 は電車が 番目の駅を出発する見込み時刻です。
また、全ての情報を用いてЛешаは 個の整数 を計算することができました、ここで電車が は駅 から駅 まで行くのに余分にかかる時間です。形式的には、電車が は駅 から駅 まで行くのにちょうど の時間がかかります( のときは はターミナル駅を出発した時刻であり、 である)。
電車が駅 を出発するのは次の2つの条件の両方を満たす場合です。
- 電車が少なくとも 単位時間(割って切り上げ) 駅にいる
- 現在時刻
Лешаは時間の遅れの予測に全エネルギーを費やしたので、彼が駅 への到着時刻を計算するのを手伝ってください。
入力
1行目には1つの整数 が与えられる、これはテストケースの数である。
各テストケースの1行目には単一の整数 が与えられる、これは駅数である。
つづく 行には2つの整数 が与えられる。 であることは保証されている。
次の行には 個の整数 が与えられる。
出力
各テストケースについて1つの整数を出力せよ、その整数とはЛешаの最終駅への到着時間である。
入出力例
2 2 2 4 10 12 0 2 5 1 4 7 8 9 10 13 15 19 20 1 2 3 4 5
12 32
注記
1つ目のテストケースではЛешаは駅 に遅延なしで の時刻に到着します( であるため)。そののち彼は の時刻に出発します。最終的に、彼は駅 に の遅延時間で、すなわち時刻 に到着します。
2つ目のテストケースではЛешаは1駅目に の遅延時間で、すなわち時刻 に到着します。この電車は1つの条件からこの駅に少なくとも 単位時間いなければならす、もう1つの条件から時刻 よりも早く出発してはいけません。結果として電車は時刻 に出発することになります。
同じ理屈で、2駅目には時刻 に到着し、時刻 に出発、3駅目には時刻 に到着し、時刻 に出発、4駅目には時刻 に到着し、時刻 に出発することがわかります。そして最終的に、5駅目には時刻 に到着します。
B. Napoleon Cake / Торт Наполеон (1000点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
Napoleonケーキを焼くには、まずドライ層 層を焼き、それをそれぞれクリームを加えながら重ねていきます。Аркадийはからの皿から始め、次の手順を 回繰り返します。
- 新しいケーキの層を重ねる
- 番目のケーキを置いたのち、上部に 単位のクリームを加える
単位のクリームを加えると、上から 層がクリームに浸されます。 層未満しかない場合、全ての層が浸され、残ったクリームは無駄になります。 の場合は、1層も浸りません。
Аркадийがこのプロセスが終わったときに、ケーキのどの層が最終的に浸っていて、どの層が浸ってないかを判断できるように手伝ってください。
入力
各テストには複数のテストケースが含まれる。1行目には単一の整数 が与えられる、これはテストケースの数である。その後、テストケースの記述が続く。
各テストケースについての記述の1行目には単一の整数 が与えられる、これはケーキの層の数である。
各テストケースについての記述の2行目には 個の整数 が与えられる、これらは各層を乗せたあとにケーキに加えるクリームの量である。
全てのテストケースでの の和が を超えないことは保証されている。
出力
各テストケースについて 個の整数を単一行に出力せよ。これらの整数の 番目は下から 層目が浸っている場合 、そうでない場合 である。
入出力例
3 6 0 3 0 0 1 3 10 0 0 0 1 0 5 0 0 0 2 3 0 0 0
1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0
C. Going Home / Поеду домой (1750点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
家路への出発から数時間*6経ち、Настяはそのプレゼントについて思い出しました。楽しむため となるような4つの異なるインデックス があるかどうか調べることにしました。
彼女の乗った電車はもう目的地に着きましたが、彼女はまだ答えを見つけていません。この謎を解く彼女の手伝いをしてください。
入力
1行目には単一の整数 が与えられる、これは配列の大きさである。
2行目には 個の整数 が与えられる。
出力
そのような4つのインデックスが存在する場合"YES
"と、そうでない場合"NO
"と出力せよ。
このようなインデックスが存在する場合、インデックス を出力せよ。
答えが複数ある場合、そのいずれかを出力せよ。
入出力例
6 2 1 5 2 7 4
YES 2 3 1 6
5 1 3 1 9 20
NO
注記
1つ目の入出力例では、 となっています。なお、他にも答えはあり、例えば2 3 4 6
です。
2つ目の入出力例では、4つのインデックスを選ぶことはできません。 ですが、インデックスは異ならなければならないので、1 2 2 3
という答えは不正解です。
D. Two chandeliers / Две люстры (1750点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
色の集合やその順番が異なるシャンデリアが沢山あります。そして、証明たんっ当社は致命的なミスを犯してしまいました、異なる2つのシャンデリアを買ってしまったのです。
シャンデリアが異なるため、色が同じ日もあれば、異なる日もあります。勿論、見た目としても悪く、Васяをイライラさせるだけです。その結果、シャンデリアが 回違う色で光った時Васяはは激怒し、恐らく、シャンデリアを購入した人を解雇するでしょう。
このことがいつ起こるか(シャンデリアが設置された日から数える)を計算するのが貴方の仕事です。Васяは週末も休日もなく毎日働いているものと考えてよいです。
入力
1行目には3つの整数 が与えられる、これらは1つ目と2つ目のシャンデリアの色数と、Васяが激怒し出すときのシャンデリアの色が異なる回数である。
2行目には1つ目のシャンデリアの色列を表す 個の異なる整数 が与えられる。
3行目には2つ目のシャンデリアの色列を表す 個の異なる整数 が与えられる。
日目の1つ目のシャンデリアの色は で、2つ目のシャンデリアの色は である、ここで である。
配列 と配列 が異なることは保証されており、シャンデリアの色が異なる日は存在します。
出力
単一の整数を出力せよ、その整数はВасяが激怒する日のインデックスである。
入出力例
4 2 4 4 2 3 1 2 1
5
3 8 41 1 3 2 1 6 4 3 5 7 2 8
47
1 2 31 1 1 2
62
注記
1つ目の入出力例では、 日目、 日目、 日目、 日目にシャンデリアの色が異なります。そのため、答えは となります。
E. Matrix Sorting / Сортировка матрицы (2500点)
テストごとのメモリ制限: 256 MB
入力: 標準入力
出力: 標準出力
ここで、列によるソートを次のように定義します: ある列を選び、全ての行をこの列の値が小さい行から大きい行へと並び替えます。この列に同じ値の行が2つ以上存在する場合、その相対的な順序は変わりません(このようなソートアルゴリズムは安定であるといわれます)。
このような列によるソートの動作は、スプレッドシートを管理する多くのオフィスソフトで見られます。Петя*8はこのソフトを使っていて、現在、表 を開いています。彼はこの表を表 に変換するために列によるソートを0回以上実行したいと思っています。
それが可能かどうかを判断し、可能であればソートする列の順序を見つけてください。並べ替えの回数を最小化する必要はありません。
入力
1行目には2つの整数 が与えられる、これらは表の大きさである。
つづく 行のそれぞれには 個の整数 が与えられます、これらは表 の要素である。
つづく 行のそれぞれには 個の整数 が与えられます、これらは表 の要素である。
出力
を に変換することができなければ、 を出力せよ。
そうでなければ、まず1つの整数 を出力せよ、これは 解でのソート回数である。
次に、 個の整数 を出力せよ、これらはПетяがソートを行う必要のある列である。
解が存在するとき、 回以下のソートの解があることは示すことができる。
入出力例
2 2 2 2 1 2 1 2 2 2
1 1
3 3 2 3 2 1 3 3 1 1 2 1 1 2 1 3 3 2 3 2
2 1 2
2 2 1 1 2 1 2 1 1 1
-1
4 1 2 2 2 1 1 2 2 2
1 1
注記
2つ目の入出力例を考えてみましょう。1列目でソートした後、表は次のようになります。
2列目でソートした後、表はとなり、これが私たちが欲しいものです。3つ目の入出力例では列は既にソートされているため、どのようなソートでも何も変わりません。
F. Tiles for Bathroom / Плитка для ванной (3000点)
テストごとのメモリ制限: 512 MB
入力: 標準入力
出力: 標準出力
今日Костяはバスルーム用のタイルを買うつもりです。彼は、お店のタイルが並んだ大きな正方形の台の前に立っています。台は セルの正方形で、各セルには色 のタイルがおかれています。この店ではタイルをパッケージで売っています: より具体的に言うと、元の正方形の部分正方形しか買うことができません。
部分正方形とは台の任意の正方形部分であり、すなわち、 についての任意の集合 のことです。
Костяには必要なタイルの枚数がまだ分からないので、あらゆる可能な大きさの部分正方形を考慮します。彼はバスルームをあまりカラフルにはしたくありません。Костяが各 について高々 個の異なる色のタイルからなる大きさ の部分正方形の数を数えるのを手伝ってください。2つの部分正方形は台上の位置が異なれば違うものとみなされます。
入力
1行目には2つの整数 が与えられる、これは台の大きさと部分正方形内の異なる色の数の制限である。
つづく 行のそれぞれには 個の整数 が与えられる、 行目の 番目の整数はセル 内のタイルの色である。
出力
から までの各 について、1つの整数を出力せよ、これは 個以下の異なる色を持つ大きさ の部分正方形の数である。
入出力例
3 4 1 2 3 4 5 6 7 8 9
9 4 0
4 8 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7
16 9 4 0
注記
1つめの入出力例では全ての色が異なります。Костяは 色よりも奥の色を持つ部分正方形は欲しくないため、任意の大きさ や の部分正方形は買うことができますが、任意の大きさ の部分正方形は購入できません。
2つめの入出力例では複数回現れる色があります。 であるため、任意の大きさ や の部分正方形は買うことができ、また、 個の異なる色からなるため任意の大きさ の部分正方形を買うことができます。台全体の は 色あるため買うことができません。
*1:Лёша 露[ˈlʲɵʂə] (Ljosha): Алексе́й [ɐlʲɪkˈsʲej] の愛称、Alexanderなどと同語源 英語版ではAlexey
*2:露[ɐrˈkadʲɪ] Arkadij, Arkady
*4:露[ˈnasʲtʲə] Nastja: Анастасия [ɐnəstɐˈsʲijə] の愛称
*5:ロシア語では退屈しのぎに2週間
*6:ロシア語では5時間
*7:露[ˈvasʲə]、Vasya、Vasja、ヴァーシャ: 男性名Василий([vɐˈsʲilʲɪj]、Vasily、Vasilij、ヴァシーリー)の指小辞語、愛称
*8:露[ˈpʲetʲə] Petja, Petya: Петр [pʲotr] の愛称
*9:露[ˈkosʲtʲə] Kostja, Kostya: Константин [kənstɐnʲˈtʲin] の愛称