alexjercan/bugnet huggingface dataset:
Problem H: Squid Multiplication

Squid Eiko loves mathematics.
Especially she loves to think about integer.
One day, Eiko found a math problem from a website.

"A sequence b ={ai + aj | i < j } is generated from a sequence a ={a0 , ... , an | ai is even if i is 0, otherwise ai is odd}. Given the sequence b , find the sequence a ."

This problem is easy for Eiko and she feels boring. So, she made a new problem by modifying this problem .

"A sequence b ={ai *aj | i < j } is generated from a sequence a ={ a0, ... , an | ai is even if i is 0, otherwise ai is odd}. Given the sequence b , find the sequence a ."

Your task is to solve the problem made by Eiko.

Input

Input consists of multiple datasets.

Each dataset is given by following formats.

n
b0 b1 ... bn*(n+1)/2-1

n is the number of odd integers in the sequence a. The range of n is 2 ≤ n ≤ 250.
bi is separated by a space.
Each bi is 1 ≤ bi ≤ 263-1.
The end of the input consists of a single 0.

Output

For each dataset, you should output two lines.
First line contains a0, an even number in the sequence a.
The second line contains n odd elements separated by a space. The odd elements are sorted by increasing order.
You can assume that the result is greater than or equal to 1 and less than or equal to 231-1.

Sample input

3
6 10 14 15 21 35
2
30 42 35
0

Sample output

2
3 5 7
6
5 7
Problem K: Rearranging Seats

Haruna is a high school student.
She must remember the seating arrangements in her class because she is a class president.
It is too difficult task to remember if there are so many students.

That is the reason why seating rearrangement is depress task for her.
But students have a complaint if seating is fixed.

One day, she made a rule that all students must move but they don't move so far as the result of seating rearrangement.

The following is the rule.
The class room consists of r*c seats.
Each r row has c seats.
The coordinate of the front row and most left is (1,1). The last row and right most is (r,c).
After seating rearrangement, all students must move next to their seat.
If a student sit (y,x) before seating arrangement, his/her seat must be (y,x+1) , (y,x-1), (y+1,x) or (y-1,x).
The new seat must be inside of the class room. For example (0,1) or (r+1,c) is not allowed.

Your task is to check whether it is possible to rearrange seats based on the above rule.

Input

Input consists of multiple datasets.
Each dataset consists of 2 integers.
The last input contains two 0.
A dataset is given by the following format.

r c

Input satisfies the following constraint.

1 ≤ r ≤ 19, 1 ≤ c ≤ 19

Output

Print "yes" without quates in one line if it is possible to rearrange the seats, otherwise print "no" without quates in one line.

Sample Input

1 1
2 2
0 0

Sample Output

no
yes

Hint

For the second case, before seat rearrangement, the state is shown as follows.

1 2
3 4

There are some possible arrangements.
For example

2 4
1 3

or

2 1
4 3

is valid arrangement.
Problem A: Popularity Estimation

あなたはとあるアニメーション制作会社の企画部長である。昨今のアニメーション制作会社が制作するものは、アニメーションそのものにとどまらない。関連商品、例えば登場キャラクターのフィギュアやキャラクターソングCDなども、重要な収益源なのである。この収益をどれだけ伸ばせるかは、ひとえに企画部長のあなたにかかっているのであった。

当たり前のことだが、こういった関連商品は闇雲に発売すればいいというものではない。商品の開発には多くの時間と予算が必要なためだ。アニメの登場キャラクターのフィギュアを発売するにしても、多くの売上が見込まれる、人気があるキャラクターのものに限らなければならない。

キャラクターの人気度を測る手段の一つが、人気投票である。あなたも今までいくつかの人気投票を企画してきたが、どうやら視聴者はこの企画に不満を抱きつつあるようだ。人気度を測る他の手法の確立が急務である。

そこであなたは、ひとつの仮説を立てた。あるキャラクターの人気度は、そのアニメ本編中における登場時間の総和に比例する、というものだ。あなたはこの仮説を検証するため、それぞれのキャラクターの登場時間を集計するプログラムを書くことにした。

Input

入力は複数のケースからなる。
各ケースは以下のフォーマットで与えられる。

n
name0 m0 d0,0 ... d0,m0-1
name1 m1 d1,0 ... d1,m1-1
.
.
.
namen-1 mn-1 dn-1,0 ... dn-1,mn-1-1

n はキャラクターの人数を表す。

namei はキャラクターの名前を表す。

mi はキャラクターが映っていた時刻の種類を表す。

mi の後にはmi 個の整数di,j が与えられる。

di,jはキャラクターが映っていた時刻を表す。

入力の終わりはn=0 からなる行によって与えられる

ある時刻に1人のキャラクターのみが画面に映っていた場合、そのキャラクターはnポイントを得ることが出来る。

同時刻に映るキャラクターが1人増える毎に、その時刻に映っていたキャラクターが得られるポイントは1減る。

n人のキャラクターが同時刻に映っていた場合、n人の人それぞれに1ポイントが加算される。

入力は以下の制約を満たす。

2 ≤ n ≤ 20

0 ≤ mi ≤ 30

0 ≤ di,j < 30

i 番目のキャラクターについてdi,j はすべて異なる。

namei はアルファベットの大文字または小文字のみを含み、長さは10以下である。

Output

最小のポイントを持つキャラクターのポイントとその名前を1つの空白で区切って出力せよ。

最小のポイントを持つキャラクターが複数いる場合は名前が辞書順で最小の人を選ぶこと。

Sample input

4
akzakr 2 1 8
fnmyi 5 2 3 4 6 9
tsnukk 5 2 3 4 7 9
yskwcnt 6 3 4 7 8 9 10
4
akzakr 1 2
fnmyi 3 10 11 12
tsnukk 2 1 8
yskwcnt 2 1 8
5
knmmdk 2 13 19
akmhmr 4 13 15 19 22
mksyk 6 3 7 12 13 15 19
skrkyk 3 1 4 8
tmemm 3 1 17 24
5
knmmdk 5 5 6 16 18 26
akmhmr 9 3 4 7 11 14 15 17 18 20
mksyk 5 6 13 25 27 28
skrkyk 4 3 16 23 24
tmemm 3 6 12 20
14
hrkamm 6 4 6 8 10 20 22
mkhsi 6 1 10 12 15 22 27
hbkgnh 2 4 9
chyksrg 8 3 4 12 15 16 20 25 28
mktkkc 6 0 1 8 15 17 20
tknsj 6 6 8 18 19 25 26
yyitktk 3 3 12 18
ykhhgwr 5 3 9 10 11 24
amftm 7 2 6 8 12 13 14 17
mmftm 4 6 12 16 18
rtkakzk 3 14 15 21
azsmur 7 1 2 4 12 15 18 20
iormns 2 4 20
ktrotns 6 7 12 14 17 20 25
14
hrkamm 2 4 21
mkhsi 6 2 3 8 11 18 20
hbkgnh 4 4 16 28 29
chyksrg 5 0 3 9 17 22
mktkkc 2 7 18
tknsj 3 3 9 23
yyitktk 3 10 13 25
ykhhgwr 2 18 26
amftm 3 13 18 22
mmftm 4 1 20 24 27
rtkakzk 2 1 10
azsmur 5 2 5 10 14 17
iormns 3 9 15 16
ktrotns 5 7 12 16 17 20
0

Sample output

7 akzakr
4 akzakr
6 knmmdk
12 tmemm
19 iormns
24 mktkkc

The University of Aizu Programming Contest 2011 Summer

原案: Tomoya Sakai

問題文: Takashi Tayama
Problem C: Time Manipulation

彼女は見習いの魔法使いだ。
彼女はまず最初に時間を操る魔法を覚えた。
そして彼女は生計を立たせるために酒屋を開くことにした。
彼女の住んでいる国の住人達はみんなお酒が大好き、ということが関係している。
住人達は長い年数をかけて熟成させたお酒が特に好きで、熟成させた年数に応じてその価値も比例して上がる。
50年熟成させたお酒より100年熟成させたお酒のほうが価値が高いのは簡単に想像がつくはずだ。
そして手に入れるのが難しいということも。
彼女は自分の魔法を使って、長い年月熟成させたお酒を一瞬で作って、それを売って収入を得ようとしているのであった。

彼女はお酒を熟成させる年数に応じて値段を決めた。
例えば5年の熟成が必要なら5エメル、100年の熟成なら100エメルを払ってもらうことにした。
彼女にとってはどちらを作るのも同じ魔法を使うだけなので差は無い。
長い年数の熟成の注文の方が彼女にとっては得なのである。

彼女はまだ未熟なので今使える魔法には制約が2つある。
お酒をn 年より長く熟成させることは今の彼女には出来ない。
またm 個の整数が存在して、それらとその倍数の年数だけお酒を熟成させることも彼女には無理なのだ。

彼女は酒屋の経営だけ生活が出来るか不安に思っている。
どのくらいの収入を得ることが出来るか彼女には予想できない。
そこで1日の収入の期待値をもとにして、他の仕事をする必要があるかの判断を行うことにした。
幸い彼女は、野菜の栽培、ペットの世話、料理、裁縫、大工仕事など何でもできるので、酒屋での収入が少なくても困ることは無さそうだ。

彼女の1日の収入の期待値を計算するのがあなたの仕事だ。
なお期待値を計算する際に以下の3つを仮定してよい。

1日に引き受ける注文は必ず1つである。
住人は彼女に作れない年数のお酒は注文はしてこない。
住人の注文の年数は一様に分布している。

Input

入力は複数のケースからなる。
各ケースは以下のフォーマットで与えられる。

n m
p0 ... pm-1

住人は1 以上n 以下の整数の値の年数だけ熟成させたお酒を依頼してくる。

ただしm個の整数pi とその倍数を依頼してくる人はいない。

入力の終わりはn = 0 かつm =0 で与えられる。

各値は以下の条件を満たす

2 ≤ n ≤ 2,000,000,000

1 ≤ m ≤ 20

またpi はn を割り切ることが保証されている。

テストケースの数は200以下を超えない。

Output

彼女の一日の収入の期待値を出力せよ。

住人の注文として可能な年数が一つも存在しない場合は0を答えの期待値として出力せよ。

ジャッジが用意した正解の値と1e-5以下の誤差までが正答として許容される。

Sample input

12 3
2 3 6
12 4
1 2 3 6
0 0

Sample output

6.0000000000
0.0000000000

The University of Aizu Programming Contest 2011 Summer

原案、問題文: Tomoya Sakai
Problem D: The Great Summer Contest

現在、人々の娯楽はプログラミングコンテストに限られている。彼女が所属しているとある中学校の娯楽部の活動内容は、プログラミングコンテストを企画し運営することだ。彼女の仕事は問題を作成することではない。多くの人から問題を募り、審判団を組織し、またコンテストの宣伝を行う、いわば裏方のお仕事だ。カリスマ作題者や著名なアルゴリズマーと違い、そういった仕事をする人に光が当たることはほとんどない。存在感はないけれども欠かすことのできないその仕事に、彼女は誇りを持って取り組んでいた。

娯楽部は常に問題を募集しているが、それらの問題は以下の 6 種類に分類される。

Math

Greedy

Geometry

DP

Graph

Other

幸いにも多くの問題が集まったので、彼女はたくさんコンテストを開こうと考えた。コンテストは 3 問の問題からなるが、彼女はコンテストがより教育的になるようにと、以下の 4 種類のコンテストを開くことに決めた。

数学ゲーコンテスト: Math の問題と DP の問題合わせて3問の問題セット

アルゴリズムゲーコンテスト: Greedy の問題と Graph の問題合わせて3問の問題セット

実装ゲーコンテスト: Geometry の問題と Other の問題合わせて3問の問題セット

バランスの良いコンテスト: Math または DP から 1 問、Greedy または Graph から 1 問、Geometry または Other から 1 問、合わせて3問の問題セット

もちろん、あるコンテストに出題した問題は他のコンテストに出題することはできない。彼女の望みは、できるだけ多くのコンテストを開くことだ。6 種類の問題のストック数は分かっているが、さて、最大何回コンテストを開けるだろうか。彼女にとってこれは難しい問題だが、カリスマアルゴリズマーであるあなたなら解決できるはずだ。

Input

入力は複数のケースからなる。
各ケースは以下のフォーマットで与えられる。

nMath nGreedy nGeometry nDP nGraph nOther

各入力の値はそれぞれの種類の問題のストックの数を表す。

入力の終わりは

0 0 0 0 0 0

からなる行によって与えられる。

各値は以下の条件を満たす。

nMath + nGreedy + nGeometry + nDP + nGraph + nOther ≤ 100,000,000

またテストケースの数は20,000個を超えない。

Output

開催可能なコンテストの最大数を1行に出力せよ。

Sample input

1 1 1 1 1 1
1 1 1 0 0 0
1 0 0 0 1 1
3 0 0 3 0 0
3 1 0 1 3 1
1 2 0 2 0 1
0 0 1 1 0 3
1 0 0 1 1 0
0 0 0 0 0 0

Sample output

2
1
1
2
3
1
1
0

The University of Aizu Programming Contest 2011 Summer

原案: Tomoya Sakai

問題文: Takashi Tayama
Problem E: SAT-EN-3

彼女は悩んでいた。成績が良くないのだ。両親に無理を言って全寮制の学校に入学したものの、彼女の才能は一向に開花することはなかった。あるいは才能など元々なかったのかもしれないが、それはできるだけ考えたくない可能性だった。

そこで彼女が頼ったのは、インターネット上で見つけた怪しげな脳力トレーニングの教材だった。SAT-EN-3 (SATisifiability problem for Enhancement of Neuron: version 3) と銘打つその学習メソッドによると、充足可能性問題のようなもののインスタンスをひたすら手で解くことによって、計算力が向上し、引いては論理的思考力・直感力・想像力も豊かになり、部活動でも活躍できて恋愛もうまくいくのだという。さすがに最後の2つは眉唾ものじゃないかな、と彼女は思ったが、ソロバンや百マス計算のような例もあることだ。暗算が得意になったら儲けものかな、ぐらいの気楽さで、彼女はこの教材に取り組んでみることにした。

SAT-EN-3では、加法標準形で表される論理式の各変数に適切に割り当て、論理式の値を真にすることができるかどうか判定しなければならない。ちなみに、1つ以上の変数 (または、その否定) の論理積を 節 (clause) と呼び、いくつかの節の論理和で表される論理式のみが加法標準形に従っている。一般に充足可能性問題といえば論理式は乗法標準形で表されるが、SAT-EN-3では加法標準形であることに注意せよ。

彼女はしばらく SAT-EN-3 の問題集に取り組もうとして、ふと思い直した。問題集にお金を払うぐらいなら、プログラミングが得意な親友にパフェでもご馳走して、 SAT-EN-3 の問題を生成し、解くプログラムを書いてもらおう。そうすれば問題も解答もいくらでも手にはいるじゃないか。

こうして彼女の親友であるあなたは、SAT-EN-3を解くプログラムを書くことになったのである。

Input

入力は複数のケースからなる。
各ケースは以下のフォーマットで与えられる。

expression

入力の終わりは"#"からなる行によって与えられる

expressionは以下のBNFに従う。

ここでは文字列リテラルを""を用いて囲んでいる。
実際の入力に""は含まれない。
また入力には余計な空白は含まれていない。

<expression> ::= "("<clause>")" | "("<clause>")|("<expression>")"
<clause> ::= <literal>"&"<literal>"&"<literal>
<literal> ::= <variable> | "~"<variable>
<variable> ::= [a-z]|[A-z]

expressionの長さは500文字を超えない。

テストケースの数は1100個を超えない。

Output

与えられた式を満たす変数の割り当てが存在するのならばyesを、そうでなければnoを出力せよ。

Sample input

(B&B&f)|(~d&~i&i)|(~v&i&~V)|(~g&~e&o)|(~f&d&~v)|(d&~i&o)|(g&i&~B)|(~i&f&d)|(e&~i&~V)|(~v&f&~d)
(S&X&~X)
#

Sample output

yes
no

The University of Aizu Programming Contest 2011 Summer

原案: Tomoya Sakai

問題文: Takashi Tayama
Problem F: Cosmic Market

Cosmic market(コズミック・マーケット)、通称コズミケ、は全宇宙最大規模の同人即売会だ。
コズミケにはあらゆるジャンルの同人愛好家達が集う。
近年、コズミケへの来場者は増加傾向にある。
最初から全ての人が入場できると大変混雑して危険なので、開場直後は入場規制を行っている。
ある一定人数の人だけが開場と同時に入場することが出来るのだ。
それ以外の人たちはしばらく待ってからの入場となっている。

しかし先着順に会場に入ることにすると、徹夜で前日から並ぶ人が出てしまう。
コズミケの参加者には未成年も多く、治安上の問題もあるので先着順という決め方はとても良くない。
そういう理由があって、コズミケでは参加者の中である種のゲームを行い、そのゲームで勝ち残った人が最初に入場する権利を手にできる。
公平を期すために毎年ランダム性の高いゲームを採用している。

僕は今回もコズミケに参加する予定だ。
僕は今回のコズミケでどうしても手に入れたい同人誌がある。
とある人気サークルが頒布する同人誌で、今年の春に話題になった魔法少女のアニメを取り扱っている。
しかし、このサークルはとても人気で毎回すぐに頒布が終了してしまう。
開場と同時に入場できなかった場合に手に入れることはほぼ不可能だろう。
もちろん後日同人ショップなどでも手に入るようになるのは間違いない。しかしそれまで我慢することなど僕には出来ない。
僕はどんな手を使ってでもコズミケ当日に手に入れなくてはいけないのだ。
不幸なことに僕は今までのコズミケで最初に入場できたことは一度もない。

コズミケのカタログによると、今回は以下のようなゲームで最初に入場できる人を選ぶらしい。
まず参加者のうち先着 r×c 人の人が、r×c　のグリッドのように配置された座席の好きな場所に座る。
先着順で場所を選べるので早く行った方が選択肢が沢山ある。
r×c 人の人が座ったらゲームが始まる。
このゲームはある一定の回数、ある1つの列（行）の座席にいる全ての人に対して、着席、あるいは起立が指示される。
すでに着席している人に着席の指示が出された場合はそのまま待機すれば。起立している人も同様である。
この指示が出される対象の列（行）と指示の内容はランダムにルーレットで決められる。
ある一定の回数の指示が終わった時点で起立している人だけが最初に開場に入れるのだ。
指示の回数は参加者には知らされていないので、いつゲームが終わるか分からない。
なのである時点で立っている人も座っている人も自分が最初に入場できるかは分からない。
だからスリルを味わうことが出来る、とカタログでは強調されている。

コズミケ前日の午後1時、僕は今年のゲームに関するデータをすべて手に入れた。
僕が手に入れた情報によると、この指示の回数、q はすでに決まっている。
それどころかq 回の指示内容が全てがすでに決まっている。
ランダム性が高いなどといわれているがそれは嘘だったのだ。
どういう理由があって事前に決まっているのかは分からない。
しかしこの情報は僕にとっては天の恵みのようだ。

もしこのデータどおりにゲームが行われれるのであれば、最初に入場することが出来る座席の場所が全て分かる。
最悪の場合、僕以外の参加者全員がこの情報を得ていたとしてみよう。
そんな場合でも遅くとも何番目に開場に到着すれば最初に会場に入ることが出来るかわかるはずだ。
しかしこの指示内容を今から手計算で解析するのは量が多すぎるので無理そうだ。
どんなに頑張ってもコズミケには間に合わない。

そこで、僕は君にこの計算を任せることにした。
君はプログラミングコンテストによく参加しており、このようなの計算プログラムを書くのは得意なはずだ。
もちろんただでやってくれとは言わない。
カタログによると、今年のコズミケにはプログラミングコンテストに関する同人誌を出しているサークルが参加する予定のはずだ。
もし僕が開場と同時に入場できたら報酬としてその同人誌を手に入れて君にプレゼントするよ。
さて、僕はこれから5時間ぐらい仮眠をとることにしよう。その間に君ならきっと答えを出してくれると僕は信じている。

Input

入力は複数のケースからなる。
各ケースは以下のフォーマットで与えられる。

r c q
A0 B0 order0
A1 B1 order1
.
.
.
Aq-1 Bq-1 orderq-1

Ai = 0 の時,Bi 行目に対してorderi の指示が実行される。

Ai = 1 の時,Bi 列目に対してorderi の指示が実行される。

orderi = 0の時は指定された行または列の人全員を座らせる。

orderi = 1の時は指定された行または列を人全員を立たせる。

入力の終わりはr =0 c =0 q =0 で与えられる。

入力の値は以下の条件を満たす。

1 ≤ r ≤ 50,000

1 ≤ c ≤ 50,000

1 ≤ q ≤ 50,000

orderi = 0 または 1

Ai = 0 の時

0 ≤ Bi < r

Ai = 1 の時

0 ≤ Bi < c

テストケースの数は100を超えない

Output

最悪の場合に、何番目までに到着すれば最初に会場に入れる権利を得ることが出来るかを一行で出力せよ。

Sample input

5 5 5
0 0 1
0 0 0
0 2 0
1 2 1
0 0 0
5 5 5
1 4 0
0 1 1
0 4 1
1 3 0
0 3 1
5 5 5
1 0 0
0 3 0
1 2 1
0 4 0
0 1 1
0 0 0

Sample output

4
13
8

The University of Aizu Programming Contest 2011 Summer

原案、問題文: Tomoya Sakai
Problem G : Everything Starts With Your Vote

ヒューリスティクスという言葉がある。確実にうまくいくという保証はないけれども大抵の場合はうまくいく、比較的単純なアプローチのことだ。単純にして強力であるがゆえに、この世の中は多くのヒューリスティクスで満ち溢れている。

ヒューリスティクスの一例として、こんなものが挙げられる。アニメ番組において、あるキャラクターの人気度は、そのアニメ本編中における登場時間の総和に比例する。確かにこれは多くの場合に成り立っているようだ。しかし、どうやら僕は少数派に属するらしい。影の薄いキャラ、背景にちらりと映るモブキャラなんかに限って可愛く見えたりするのだ。

自分の好きなキャラのことを、他人がどう思っていようがいいじゃないか。とは言ってられない事情が、残念ながらある。関連商品、フィギュアやキャラクターソングCDなどは、人気のあるキャラのものから優先的に発売される傾向にあるのだ。商業的には当然の選択だとはいえ、不人気キャラのファンの肩身は狭い。

そこで重要となってくるのが、アニメ番組の制作会社によって行われる人気投票である。実際の人気がどうであれ、ここで多くの票を獲得すれば、関連商品への道が開かれるのだ。どんな手段を使っても票を集めねばなるまい。

厳正なる投票のために、ある関連商品を1つ購入するたびに1票の投票権が与えられる。この仕組を厳正と呼ぶべきかどうかは今大きく議論されているが、とにかく僕は L 票の投票権を得た。投票の対象となるキャラは全部で N 人いて、より多くの票を獲得した K 人のキャラ (同票の場合は名前の辞書順) の関連商品が企画されることになる。僕の好きなキャラは全部で M 人いて、その中からできるだけ多くのキャラを上位 K 人に入れたいと思っている。

僕はまず、それぞれのキャラがどれだけの票を獲得するかを予測した(難しいことではない。あるキャラクターの人気度は、その登場時間の総和に比例すると仮定しただけだ)。この予測が正しいとして、より多くの僕の好きなキャラの関連商品が発売されるようにするためには、僕はこの L 票を誰にどれだけ投じればいいだろうか。

Input

入力は複数のケースからなる。
各ケースは以下のフォーマットで与えられる。

N M K L
name0 x0
.
.
.
nameN-1 xN-1
fav0
.
.
.
favM-1

N、M、K、Lの意味は問題文に記されているとおりである。

namei　はキャラクターの名前、xi　はi 番目のキャラクターの票の総数を表す。

favi はあなたがひいきしているキャラクターの名前を表す。これらの名前は必ず異なり、また必ずキャラクターの名前の入力の中に含まれる。

入力の終わりはN = 0 かつ M = 0 かつ K = 0 かつ L = 0からなる行によって与えられる

また各値は以下の条件を満たす

1 ≤ N ≤ 100,000

1 ≤ M ≤ N

1 ≤ K ≤ N

1 ≤ L ≤ 100,000,000

0 ≤ xi	≤ 100,000,000

nameiはアルファベットのみを含み、長さは10文字以下である。

テストケースの数は150を超えない。

また20,000 ≤ N となるケースの数は20を超えないことが保証されている。

ジャッジデータは大きいので、速い入力を使うことを推奨する。

Output

M 人のキャラの中から最大で何人を上位K 人に入れることが出来るかを1行で出力せよ。

Sample input

4 1 3 4
yskwcnt 16
akzakr 7
tsnukk 12
fnmyi 13
akzakr
4 1 3 5
akzakr 7
tsnukk 12
fnmyi 13
yskwcnt 16
akzakr
4 2 2 1
akzakr 4
tsnukk 6
yskwcnt 6
fnmyi 12
akzakr
fnmyi
5 2 3 28
knmmdk 6
skrkyk 14
tmemm 14
akmhmr 15
mksyk 25
knmmdk
skrkyk
5 2 3 11
tmemm 12
skrkyk 18
knmmdk 21
mksyk 23
akmhmr 42
skrkyk
tmemm
14 5 10 38
iormns 19
hbkgnh 23
yyitktk 31
rtkakzk 36
mmftm 43
ykhhgwr 65
hrkamm 66
ktrotns 67
mktkkc 68
mkhsi 69
azsmur 73
tknsj 73
amftm 81
chyksrg 88
mkhsi
hbkgnh
mktkkc
yyitktk
tknsj
14 5 10 38
mktkkc 24
rtkakzk 25
ykhhgwr 25
hrkamm 27
amftm 37
iormns 38
tknsj 38
yyitktk 39
hbkgnh 53
mmftm 53
chyksrg 63
ktrotns 63
azsmur 65
mkhsi 76
mkhsi
hbkgnh
mktkkc
yyitktk
tknsj
0 0 0 0

Sample output

0
1
1
2
1
4
5

The University of Aizu Programming Contest 2011 Summer

原案: Tomoya Sakai

問題文: Takashi Tayama
Problem H: World domination

世界征服を企む悪の組織、なんてものは、古今東西フィクションノンフィクションを問わず、いろんな所にいるものだが、一体彼らは何のために世界征服をしようとしたのだろうか。そんなことをふと考えてしまうのは、私もまた、世界征服を企てているからであった。私が世界征服を目論む理由はただ一つ、私がロボット工学の分野で世界一優秀であることを世界に示すためである。征服したあとの世界になど興味はない、そこらへんの犬にでもくれてやっても構わないのだ。

誠に遺憾だが、それはつまり、私よりも優秀であるとされている研究者がいる、ということだ。その人物には心当たりがある。誰あろう、私の学生時代の同期 R 博士である。彼の実績は認めるが、しかし私のそれより優れていたとは思わない。ただ彼は、平和のためのロボット利用などという甘っちょろいことを言っていたがために、教授連中の受けが良かったのだ。主席こそ逃したものの、本当は私の方がずっと優秀なのだ。

その優秀さを示す端的な例が、この世界征服のために用意した戦闘ロボットである。戦闘ロボットはその特性に応じた専用の武器を持ち、その武器はチップに収められているが、このチップは強力な互換性を持つ。ただ開発者自身の他の戦闘ロボットと互換性をもつだけではない (その程度のことは、他ならぬ R 博士が既に達成している) 。私のチップのすごいところは、その R 博士の家事手伝いロボットとも互換性があるのだ。その家事手伝いロボットは非売品のワンオフモデルなので、私はそのロボットの設計を知らないで互換チップを開発したのだ。我ながら神業と言わざるを得ない。この仕様を敵が利するだけの無駄な仕様と言う人もいるが、それは愚かな考え方だ。私は私の優秀さを示すために戦闘ロボットを開発しているのだ。ただ勝てばいいというものではないのである。

世界征服計画に話を戻そう。私は n 機の戦闘ロボットを製作し、それぞれに異なる武器チップを 1 つずつインストールした。これを用いて世界の主要施設を奪取するつもりだが、この計画を阻むために R 博士は彼の家事手伝いロボットを送り込んでくることだろう。家事手伝いロボットは自身の武器で私の戦闘ロボットに戦闘を挑んでくるが、1 回の戦闘には 1 単位時間かかり、戦闘の結果どちらか片方のロボットが敗北し破壊される。

戦闘の結果私のロボットが破壊された場合、そのロボットの武器チップは相手に奪われることになる。ある私のロボットの武器チップは他の私のロボットのうちの 1 機の弱点になっていて、またどの私のロボットも弱点となる武器チップをただ 1 つだけ持つ。私は私の各ロボットについて、相手がそのロボットの弱点武器を持っていた場合の敗北確率・持っていなかった場合の敗北確率をそれぞれ見積もることができる。

戦闘の結果相手の家事手伝いロボットが破壊された場合、R 博士はスペアボディ転送システムによって同じ家事手伝いロボットを送り込んでくる。このとき、相手のロボットが既に得ていた武器チップは失われることがない。R 博士は無制限にスペアボディ転送システムを使用してくるが、その隙に私は私の戦闘ロボットを修理することができるので、何度戦っても先に説明した敗北確率は変化することはない。また、スペアボディ転送システムは家事手伝いロボットが破壊されたときに破壊された場所でしか使えないので、家事手伝いロボットは敗北した直後に別の私の戦闘ロボットに挑むことはできない。

R 博士は無制限にスペアボディ転送システムを使えるのだから、悔しいが n 機の戦闘ロボットが全て破壊されるのは時間の問題だ。そこで私は戦闘ロボットを戦わせている裏で、スペアボディ転送システムごと破壊できるようなさらなるロボットの開発に勤しむつもりだ。しかし、私には一体どれだけの時間が残されているのだろうか。R 博士のロボットが最も早く私の n 機のロボットを撃破するような戦略を取ったとき、どれだけの時間がかかるだろうか。まずはそれを計算しなければなるまい。ついでに、そのようなロボットの撃破順序が何通りあるかも確認しておきたい。

Input

入力は複数のケースからなる。
各ケースは以下のフォーマットで与えられる。

n
p0 id0 w0
p1 id1 w1
.
.
.
p1 idn-1 wn-1

pi は弱点の武器を相手が持っていない時にi 番目の戦闘ロボットが敗北する確率を表す。

idi はi 番目の戦闘ロボットの弱点となる武器を持っている戦闘ロボットを表す。

wi は弱点の武器を相手が持っている時にi 番目の戦闘ロボットが敗北する確率を表す。

入力の終わりはn = 0によって与えられる。

各値は以下の条件を満たす

2 ≤ n ≤ 100

pi　と　wiは小数点以下3桁の数で表される。

0.001 ≤ pi < wi ≤ 1.000

idi != i

テストケースの数は500を超えない。

Output

n体の戦闘ロボットが撃破されるまでの時間の期待値と、その撃破順序の組み合わせの数を100000007で割った余りを空白で区切って出力せよ。

期待値の値はジャッジの用意した回答との誤差1e-9までが認められる。

Sample input

4
0.200 3 0.500
0.100 0 0.400
0.900 1 1.000
0.400 2 0.600
2
0.600 1 0.800
0.500 0 1.000
9
0.200 7 0.600
0.400 0 0.500
0.700 8 1.000
0.100 4 0.400
0.200 2 0.600
0.100 6 0.400
0.100 5 0.400
0.600 3 0.900
0.500 1 0.900
9
0.300 8 0.900
0.700 3 0.800
0.300 0 0.900
0.700 6 0.800
0.200 5 0.700
0.200 2 0.700
0.700 4 0.800
0.700 1 0.800
0.300 7 0.900
0

Sample output

7.27777777778 1
2.66666666667 1
23.98412698413 72
11.36904761905 4

The University of Aizu Programming Contest 2011 Summer

原案: Tomoya Sakai

問題文: Takashi Tayama
Problem I: 11224111122411

腕が引っかかって抜けない。

机の裏に転がり込んでしまったものを拾おうとして、懐中電灯代わりに携帯の画面で照らしながら腕を挿し込んでみたが、うっかり何かに引っかかって抜けなくなってしまった。無理に動かすと痛い。

どうしよう。どうすれば脱出できるのだろう。大声で助けを呼ぶか。恥ずかしいので却下したいが、独力で脱出するのは難しそうだ。いや、声の届く範囲には誰もいなかったはずだ。焦る気持ちを押さえて辺りを見渡す。あのパソコンに手が届けばメールで助けを呼べるのだが、あいにく遠すぎる。やはり偶然誰かが通りかかるのを待つしかないのか。

いや待て、メールを送る機械ならあるじゃないか。手の届くところというよりも、既にこの手の中に。深く伸ばした手の先の画面はぼやけてよく見えないが、長年使っている携帯だ。画面が見えなくてもメールぐらいは送れるはずだ。

慎重に、頭の中に画面を描きながらボタンを押す。指の感触だけを頼りに、タイプミスだけはしないように、数字キーを何度も押してメッセージを打ち込む。漢字変換はしない、平仮名でもきっと伝わるはずだ。つくづくタッチパネルが主流のスマートフォンに乗り換えていなくてよかったと思う。

深呼吸をして、送信ボタンに指をかける。しばらくして、携帯が軽く震えた。送信完了の合図だ。溜息。しばらくすれば友人が助けに来るに違いない。

友人は賢いので適切に解釈してくれると思うのだが、今送ったメッセージは、本当に送りたかったメッセージとは違うものになっているかもしれない。この携帯の文字入力メソッドは広く使われているものと同じで、例えば「あ」行の平仮名を入力するのに "1" のボタンを使う。 "1" は「あ」を、 "11" は「い」を、以下同様に "11111" が「お」を表す。平仮名はループする、つまり "111111" もまた「あ」となる。「か」行は "2" 、「さ」行は "3" 、 ... を使い、同じボタンを続けて押したときの挙動は "1" の例と同様である。

ただし、この文字入力メソッドにはちょっと厄介な挙動がある。数字ボタンを押した後しばらく操作しないでいると、平仮名への変換が強制的に行われてしまうのだ。つまり、３回続けて "1" を押せば 「う」 になるが、時間を置いて３回 "1" を押すと「あああ」になる。別の例をあげると、 "111111" と押したとき、その押す間隔によって入力された文字列は「あ」にも「ああああああ」にもなる。"111111111111"は「い」かもしれないし、「ええいああ」かもしれないし、１２個の「あ」になるかもしれない。なお、違う数字ボタンを押したときにも平仮名への変換はおこなわれるので、 "12345" は「あかさたな」という文字列にしかなりえない。

さて、慎重にタイプしたので間違ったボタンを押したつもりはないのだが、適切な間隔でボタンを押せた自信はない。本当に送りたかったメッセージとは違うものを送ってしまった可能性は大いにあるのだ。さて、送られたかもしれない文字列の数は何通りだろうか。ああ、これは友人が助けに来るまでの暇つぶしにいいかもしれない。遅くても５時間以内に助けに来てくれるだろう。それまでに解けるといいのだけど。

Input

入力は複数のケースからなる。

各ケースは以下のフォーマットで与えられる。

string

入力の終わりは,入力が"#"からなる行によって与えられる

string は0から9の間の数字を最大100,000個含む。

string の長さが10,000を越える入力は50個を超えない。

テストケースのファイルサイズは5MB以下であることが保証される。

またテストケースの数は100を超えない。

各数字キーで入力可能な文字は以下の表のとおりである。

数字	入力可能な文字

1	あいうえお

2	かきくけこ

3	さしすせそ

4	たちつてと

5	なにぬねの

6	はひふへほ

7	まみむめも

8	やゆよ

9	らりるれろ

0	わをん

Output

文章の解釈の仕方を100000007で割った余りを1行に出力せよ。

Sample input

1
11
111111
111111111111
12345
11111111119999999999
11111111113333333333
11111111118888888888
11111111112222222222111111111
11111111110000000000444444444
11224111122411
888888888888999999999999888888888888999999999999999999
666666666666666777333333333338888888888
1111114444441111111444499999931111111222222222222888111111115555
#

Sample output

1
2
32
1856
1
230400
230400
156480
56217600
38181120
128
26681431
61684293
40046720

The University of Aizu Programming Contest 2011 Summer

原案: Tomoya Sakai

問題文: Takashi Tayama
Problem J: The Incubator

サラリーマンの朝は早い。エリートコースを進み一流企業に入社して新人という肩書きからも卒業する頃、僕に下った辞令は未開の惑星における営業活動だった。辺鄙な土地での不便な生活を強いられているが、一応は左遷でなく栄転であり、その証拠に給料もぐんと上がっている - こんな場所では金なんて使いようもないのだけど。近年僕たちが直面している宇宙規模のエネルギー不足に対応するため、特定の生物種の個体から莫大なエネルギーを生成するテクノロジーが開発された。その特定の生物種というのが、この辺鄙な惑星の固有種なのだ。この生物が絶滅しないように保護しつつ、適度にエネルギーを回収していくのが僕の仕事だ。

エネルギーの回収は、いくつかのステップからなる。まずは、エネルギーの回収に使用する個体を選別する。個体によって得られるエネルギーの量は大きく異なるのだ。次に、選別された見込みのある個体に、インキュベーションという特別な処理を行う。インキュベートされた個体は膨大なエネルギーの源となる何かをを絶えず蓄えたり吐き出したりするので、個体にできるだけ多くのエネルギーの源となる何かが蓄えられている瞬間を狙って、円環の理に導く。するとお待ちかねのエネルギーが手に入る、という仕組みだ。

エリートサラリーマンに課せられるノルマは厳しい。しかし、僕にとって数十万のインキュベートされた個体を管理するのは朝飯前だ。今日は月末なので本社に月報を提出しなければならないが、今月はとても良い個体に遭遇したこともあって、過去最高の成績になりそうだ。

と喜んでいたのも束の間、最後の最後でひどいミスをやらかしてしまった。SQL文を打ち間違えて、今月の成果を記録しているデータベースのテーブル 1 つをまるごとふっ飛ばしてしまったのだ。あれがなければ、今月の成果は全く無しということになってしまう。降格、左遷、あるいは解雇もありえるかもしれない。

最後の頼みの綱は、作業のたびにこまめにつけていたログファイルだ。僕はいつも、個体をインキュベートするたびに一意な整数の番号を振り、インキュベートされた個体たちの番号を 1 つの配列に保存している。僕の営業活動は、次のような行動からなる。

個体をインキュベートし、その個体に番号 x を割り当て、その個体の番号を配列の末尾に追加する。

配列の n 番目の番号が示す個体を円環の理に導く。

番号 x の個体を円環の理に導く。

残念ながら僕は最大 lim 体の個体しか管理できない。個体をインキュベートしたとき、もしインキュベート済みの個体が lim を超えたならば、昔にインキュベートした個体から順に lim 以下になるまで円環の理に導く。

僕はこれら 4 つの営業活動を行うたびに、欠かさずログファイルに記入している。しかし、4 の活動だけはログファイルに一切記入していない。そうしても特に曖昧なところは残らないためだ。

いつも僕は、個体の番号の配列の操作を愚直に行なっている。しかし今度ばかりは、愚直に操作しながらログファイルを走査していては間に合いそうにない。月報の提出期限は 5 時間後に迫っている。

そこで、君たちにお願いがあるんだ。ログファイルから僕の営業活動を再現するプログラムを書いてほしい。もし書いてくれたら、お礼に君たちの願い事を何でも 1 つ叶えてあげよう。何だって構わない。どんな願いことだって叶えてあげられるよ。

Input

入力は複数のケースからなる。
各ケースは以下のフォーマットで与えられる。

ここには入力のフォーマットを書く。
q lim
query0 x0
.
.
.
queryq-1 xq-1

queryi が0の時、インキュベートした個体に xi の番号を割り当てたことを表す。

queryi が1の時、配列の xi 番目の番号が示す個体を円環の理に導く。

queryi が2の時、その時点で配列に含まれている中で　xi　番目の個体の番号を出力する

queryi が3の時、番号が xi の個体を円環の理に導く。

q = 0 かつ lim = 0の時入力の終わりを表す。

lim は32bit signed integerで表すことができる正の整数である。

すべてのクエリーについて、xi は0以上の整数で32bit signed integerで表すことができる。

0のクエリーについて、xi　は32bit signed integerの範囲に収まる非負整数で表される。

1,2のクエリーについて、xi の値は1以上の整数である。また存在しない配列の番号が指定されることはない

3のクエリーについて、存在しない個体番号が入力に含まれることはない。

また一度消去された個体の番号が値が同じテストケース内で、別の個体に割り当てられることはない。

ジャッジデータは次の2つのうち少なくとも片方を満たす。

1 ≤ q ≤ 400,000 かつテストケースの数が5個以下

1 ≤ q ≤ 10,000 かつテストケースの数は50個以下

Output

入力のクエリーが2の場合、x番目の個体番号を出力する

各ケースの最後には"end"を出力する

Sample input

22 5
0 0
0 1
0 2
0 3
0 4
2 1
2 2
2 3
2 4
2 5
0 5
2 1
0 6
2 2
3 3
2 2
2 2
1 2
2 2
2 1
2 2
2 3
30 5
0 383594529
1 1
0 868094164
0 708344471
0 4102559
0 944076771
0 320398558
1 1
0 949521499
0 1035499529
0 585547493
0 915496840
0 721553343
0 405934659
0 814301872
1 1
2 3
0 919753364
1 1
0 69231610
2 2
0 373477673
0 842917649
0 961543702
0 907959899
2 1
2 2
2 3
2 4
2 5
30 5
0 726736645
0 1
0 344304573
0 241734870
3 726736645
1 3
2 1
0 586879203
2 3
0 511883046
0 481344051
0 154183395
0 435126242
0 185906768
1 1
0 383123551
0 20253038
1 5
2 1
2 2
0 163044554
3 435126242
0 105612613
0 725050544
0 559442328
2 1
2 2
2 3
2 4
2 5
0 0

Sample output

0
1
2
3
4
1
3
4
4
5
2
5
6
end
405934659
405934659
69231610
373477673
842917649
961543702
907959899
end
1
586879203
154183395
435126242
383123551
163044554
105612613
725050544
559442328
end

The University of Aizu Programming Contest 2011 Summer

原案: Tomoya Sakai

問題文: Takashi Tayama
Problem A: K Cards

ある日、先生は次のようなゲームを思いついた。

ゲームは 1 から 10 までの数がひとつ書かれたカードを n 枚使用し、以下のように進む。

先生が n 枚のカードを数が見えるようにして横一列に黒板に貼り付け、ある整数 k (k ≥ 1) を生徒に宣言する。横一列に並べられた n 枚のカードについて、連続した k 枚のカードの積の最大値を Ck とする。また、先生が並べた時点での Ck を Ck' とおく。

生徒は 1. で貼られたカードの列を見て Ck を大きくすることを考える。ある 2 枚を入れ替えることで Ck をより大きくすることができた場合、生徒の成績は Ck - Ck' 点上がる。誰かが成績点を得たらゲームを終了する。

あなたの仕事は先生が並べたカードの列を入力し、生徒が得られる最大の成績点を出力するプログラムを書くことである。ただし、そこからどの 2 枚を選んで交換してもCkを下げることしかできない (Ck - Ck' < 0) 場合、文字列 "NO GAME" (引用符を含まない)を出力せよ。

先生が並べたカードが7, 2, 3, 5の場合。このとき 7 と 3 を交換することで生徒は最大で 35 - 15 = 20 成績点を得る。

Input

入力は複数のテストケースからなる。ひとつのテストケースは以下の形式に従う。

n k
c1
c2
c3
…
cn

n は先生が並べるカードの枚数、k は宣言する整数である。
また ci (1 ≤ i ≤ n) はカードに書かれた数を示す。また、この順で先生が横に黒板に貼り付けるとする。入力の終わりは、ふたつの0が一文字の空白で区切られる一行で示される。

Constraints

入力はすべて整数

2 ≤n ≤ 100

1 ≤k ≤ 5

k ≤ n

1 ≤ ci ≤ 10 (1 ≤ i ≤ n)

テストケースの数は 100 を超えない。

Output

生徒が得られる成績点の最大値あるいは文字列 "NO GAME" (引用符を含まない)を各テストケースに付き 1 行で出力せよ。

Sample Input

4 2
2
3
7
5
0 0

Sample Output

0

Hint

サンプルにおいて C2' = 35 であり、ここからどの 2 枚を並び替えても C2 の最大値は 35 より大きくならない。したがって生徒が得られる成績点は最大 0 点である。
Problem B: Spellcasters

n 人の魔法使いがいる。彼らには 1 から n までの番号があり、i 番目の魔法使いは魔力 ri ( 1 ≤ i ≤ n ) を持っている。いま彼らは強力な魔法使いと対峙しており、その敵の魔力は S である。n 人の魔法使いは協力して戦うのが得意で、特に 2 人で協力して戦うことを好む。2 人の魔法使いが協力した場合、魔力は単純にその和となり、強力な魔法などを駆使してある程度強い敵にも勝てるようになる。あなたの仕事は魔力 S を持つ敵に対して勝つことができる魔法使いのペア (i, j) ( i ≠ j かつ 1 ≤ i ≤ n かつ 1 ≤ j ≤ n ) の総数を出力することである。ただし (i, j) と (j, i) は同じ組として数える。一方の魔力が他方の魔力よりも大きいとき、大きい魔力を持っている側が勝つ。等しい場合は相打ちで勝ったことにならない。

Input

入力は複数のテストケースからなる。 各テストケースは以下の形式に従う。

n S
r1
r2
…
rn

各変数の意味は問題文中の通りである。
入力の終わりは、ふたつの0が一文字の空白で区切られる一行で示される。

Constraints

入力はすべて整数

1 ≤ n ≤ 20,000

1 ≤ ri ≤ 100 ( 1 ≤ i ≤ n )

1 ≤ S ≤ 100

テストケースの数は 100 を超えない。

Output

条件を満たす組 (i, j) (i ≠ j) の総数を各ケースに付き 1 行に出力せよ。

Sample Input

3 7
1
3
10
0 0

Sample Output

2