alexjercan/bugnet huggingface dataset:
Problem C: Live Schedule

YOKARI TAMURAは全国的に有名なアーティストである。今月YOKARIは D 日間にわたってライブツアーを行う。ツアーのスケジュールの決定においてこの国を C 種類の地域でわける。YOKARIがある地域でライブを行うことにより利益を得られ、これは正の整数で表される。YOKARIは原則として 1 日に最大 1 つまでライブを行う。ただし、ある地域でライブを行った後、隣接する地域でライブを行える場合はその地域で同じ日に再びライブを行うことができる。この条件を満たす限り、地域を移動しながら何度もライブを行うことができる。また、同じ日に同じ地域でライブを 2 度以上行うことはできない。さらに、同じ日に 2 回以上のライブを行う日の数はツアー期間中合計 X 以下でなければならない。

あなたはYOKARIの関係者であり、彼女のライブツアーのスケジュールを仮決めしなくてはならない。どの日にどの地域でライブを行えばもっとも有益だろうか。ただし 1 回のライブごとにYOKARIには非負の整数で表される負担がかかり、ツアー期間中の合計負担は W 以内でなければならない。あなたの仕事は各ライブでYOKARIにかかる負担と期待される利益を読み込み、スケジュールを仮決めして、利益合計の最大値を出力することである。

Input

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

C D W X
E1,1 E1,1 … E1,D
E2,1 E2,1 … E2,D
…
EC,1 EC,2 … EC,D
F1,1 F1,1 … F1,D
F2,1 F2,1 … F2,D
…
FC,1 FC,2 … FC,D

C は地域の種類数、D はツアー期間の長さ、W はこのツアーでYOKARIに許容される負担の合計の最大値、X はツアー期間中にライブを同じ日に 2 度以上行える合計日数の上限である。
Ei,j ( 1 ≤ i ≤ C かつ 1 ≤ j ≤ D ) は地域 i で j 日目にライブを行うことで期待される利益である。Ei,j が 0 のとき地域 i で j 日目にライブを行えないことを示す。
Fi,j ( 1 ≤ i ≤ C かつ 1 ≤ j ≤ D ) は地域 i で j 日目にライブを行うことでYOKARIにかかる負担である。Ei,j が 0 のとき、この値は0である。
地域 i は地域 i + 1 と i - 1 それぞれに隣接する。ただし地域 1 と地域 C ( C > 2 ) は隣接しない。
入力の終わりは、4個の0がそれぞれ一文字の空白で区切られる一行で示される。

Constraints

入力はすべて整数

1 ≤ C ≤ 15

1 ≤ D ≤ 30

0 ≤ W ≤ 50

0 ≤ X ≤ 5

0 ≤ Ei,j ≤ 1,000

0 ≤ Fi,j ≤ 10

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

Output

各ケースに付き、スケジュールを仮決めして期待される利益合計の最大値を 1 行に出力せよ。

Sample Input

5 5 10 2
1 1 0 1 1
0 9 1 0 1
1 1 1 9 1
1 1 9 0 1
1 1 1 1 0
1 1 0 1 1
0 9 1 0 1
1 1 1 9 1
1 1 1 0 1
1 1 1 1 0
1 1 10 0
3
7
1 1 5 0
3
6
1 2 10 1
6 7
5 6
2 1 10 1
4
8
3
7
2 1 10 0
4
8
3
7
2 1 5 0
4
8
3
6
0 0 0 0

Sample Output

18
3
0
7
12
8
4
Problem D: Dimensional Analysis

量の次元とは、相異なる量の間の関係式から具体的数値を無視して量の種類とそのべき乗だけに着目した概念である。具体的には定数係数を無視した等式として、次元の関係式を表す。すなわち、量 q の次元を[ q ]と表せば、以下のようないくつかの次元の関係式が例示できる。

[面積] = [長さ]2

[体積] = [長さ]3

[速さ] = [長さ][時間]-1

[加速度] = [長さ][時間]-2

[力] = [質量][長さ][時間]-2

[仕事] = [質量][長さ]2[時間]-2

(Wikipedia 「量」より抜粋 URL http://ja.wikipedia.org/wiki/%E9%87%8F)

量は基本量と組み立て量に分類される。
この問題ではn個の基本量とm個の組立量が与えられる。
与えられたm個の組立量の次元はすべてn個の基本量の次元の積で表すことができる。
また基本量の次元の積で２つの次元を表したとき、各基本量の指数がすべて一致すればその二つの次元は等しいと言える。

式と変数の量と量の次元についての情報が与えられるので、
式を解析しその次元が表す量の名称を出力せよ。
名称が定義されてない場合はundefinedと出力せよ。
また、計算過程で異なる二つの次元の加算もしくは減算するような演算のことを”不正な演算”の定義する。
”不正な演算”があればerrorと出力せよ。
与えられる式は以下を満たす。

すべての変数は組立量の次元に割り当てられている。

式は四則演算+, -, /, *とカッコ（）と変数のみを含む。

四則演算はよく知られているもので、正しく記述されているものとする。厳密には以下のBNFに従う。 また単項演算子は使用されない。(x * (-a))などは存在しない。

<formula>::=<term>|<formula>+<term>|<formula>-<term>
<term>::=<factor>|<term>*<factor>|<term>/<factor>
<factor>::=<variable>|(<formula>)
<variable>::=<string>
<string>::=<char>|<string><char>
<char>::=a~z|A~Z
<formula>が式を表し、<variable>が変数名を表す。

Input

入力は複数のデータセットで構成されている。
データセットの数は1,000個を超えない。
データセットは以下の形式で与えられる。

n m p
derived1
d1,1 d1,2 d1,3.... d1,n
derived2
d2,1 d2,2 d2,3.... d2,n
...
derivedm
dm,1 dm,2 dm,3.... dm,n
formula
v1 D1
v2 D2
...
vp Dp

n(1≤n≤5)は基本量の数 m(1≤m≤10) は組立量の数　p(1≤p≤15)は変数の種類数を示す。
derivediはi番目の組立量の名前である。アルファベット大文字や小文字から構成され長さは20文字を超えない。
di,j(-10≤di,j≤10)はi番目の組立量のj番目の基本量の次元を表す(1≤i≤m, 1≤j≤n)。
同じ組立量の名称は複数回現れない。
同じ次元の組立量が複数回現れることがあるが、その場合は最後に定義された名称がその組立量の名称となる。
formulaは解析を行う数式を表す。長さは100文字を超えない。
viは変数名を表す。アルファベット大文字や小文字から構成され長さは20文字を超えない。
Diはviの次元の名称を表す。すでに与えられた組立量の名称であることが保証されている。
入力中の数（n, m, p, d）はすべて整数である。
入力の終わりは、3個の0がそれぞれ一文字の空白で区切られる一行で示される。

Output

一行に式を解析しその次元の名称を出力せよ。
名称が定義されてない場合はundefinedと出力せよ。
また、不正な演算が含まれる場合はerrorと出力せよ。

Sample Input

2 3 2
length
1 0
time
0 1
speed
1 -1
a/b
a length
b time
2 3 3
length
1 0
time
0 1
speed
1 -1
a/b+c
a length
b time
c speed
2 3 3
length
1 0
time
0 1
speed
1 -1
a/b+c
a length
b time
c time
2 3 2
length
1 0
time
0 1
speed
1 -1
a/b/b
a length
b time
3 6 6
speed
1 -1 0
acceleration
1 -2 0
force
1 -2 1
length
1 0 0
time
0 1 0
weight
0 0 1
((v+l/t)+a*t)/(t*t)*w*t+f+w*a
v speed
l length
a acceleration
t time
w weight
f force
0 0 0

Sample Output

speed
speed
error
undefined
force
Problem E: School Excursion

春、それは修学旅行の時期である。
会津大学附属小学校（会津大小）でも、来年度の修学旅行の計画が建てられていた。
修学旅行は電車で移動することが伝統になっている。
会津若松市内では電車を利用する機会が少ないためだ。

しかし、学校に届いたある苦情により教員たちは頭を悩ませていた。
それは、「ある駅で大人数で乗り換えを行っていたので、その駅を利用する他の乗客に迷惑であった」という内容だった。
とくに、電車を降りたあとホームからの通路で大混雑してしまったという。

それは近年、会津大小の生徒数が急上昇しているからであった。
その原因は日本において競技プログラミングが大流行し、
小学校から競技プログラマーを養成するための訓練を行っている会津大小に生徒が集まったからである。

会津大小競技プログラミング部長であるあなたは、修学旅行を楽しみにしている。
修学旅行を成功させたいあなたは教員たちに提案をした。
「クラスごとに行動して、同じ駅に同時に到着しないようにしましょう！！　競技プログラミングの知識を応用すれば簡単です！！」

複数のクラスが同時に同じ駅に到着することがないように移動するとき（同じ駅に複数のクラスが滞在することは可能）、
出発する駅から目的地まで到達できる最大のクラス数を求め、そのときの最小の運賃を求めるプログラムをつくりなさい。
ただし、ある駅で同時に到着する電車と発車する電車が存在する場合、乗り継ぎが可能である。つまり、乗り継ぎに要する時間は無視して良い。

Input

入力は複数のデータセットから構成される。
データセットの数は20個以下である。
各データセットの形式は次に示す通りである。

n
m1
x1,1 y1,1 c1,1
x1,2 y1,2 c1,2
...
x1,m1 y1,m1 c1,m1
m2
x2,1 y2,1 c2,1
x2,2 y2,2 c2,2
...
x2,m2 y2,m2 c2,m2
...
mn-1
xn-1,1 yn-1,1 cn-1,1
xn-1,2 yn-1,2 cn-1,2
...
xn-1,m2 yn-1,m2 cn-1,m2
g

n( 2 ≤ n ≤ 100)は駅の数を表す。
駅の数は出発する駅と目的地の駅、乗り換えする駅を含む。
駅は出発する駅を1番目、最初に乗り換える駅を2番目の駅と数え、目的地をn番目の駅とする。
miはi番目の駅からi+1番目の駅への電車の数を表す。
mi(1 ≤ m ≤ 20)個の電車の情報が続く。
xi,j yi,j ci,j
はi番目の駅からi+1番目の駅に向かう電車の出発時刻(xi,j)到着時刻(yi,j)運賃(ci,j)を表す。
(0 ≤ xi,j, yi,j ≤ 200000 かつ xi,j ≤ yi,j)
(1 ≤ ci,j ≤ 1000)

その後g(1≤ g ≤ 10)が続く。
gは修学旅行に参加するクラス数を表す。
与えられる数（n,m,x,y,c,g)はすべて整数である。
入力の終了はひとつの0を含む１行で示される。

Output

一行に到着可能なクラス数とそのときの最小運賃をこの順に出力せよ。
もし、ただ一つのクラスも到着できない場合は0 0を出力せよ。

Sample Input

2
4
1 2 10
2 2 5
1 3 20
2 3 10
10
3
2
1 2 5
0 3 4
3
10 11 100
2 12 2
12 12 3
10
0

Sample Output

2 15
2 111
Problem F: Strawberry Cake

会津大学附属小学校 (会津大小) に入学したシャ、ネロ、エリ、コーは競技プログラマとして活躍するために IPPC というプログラミングコンテストに出場することにした。しかし IPPC は 3 人 1 組でチームとしてコンテストに出場する決まりで、4 人でチームを組むことはできない。そこで彼らは 2 人ずつに分かれてチームを組み、2 人 1 組で参加できる IPOCH というプログラミングコンテストに出場することにした。

チームは分かれてしまったが、実力は拮抗しており互いに良い練習相手になっている。

ある日彼らのコーチが差し入れにホールケーキを買ってきた。彼らはそれをシャの家で食べることにした。しかし家に着いて箱を開けてみるとケーキが変形していて、形は上から見ると円形ではなく凸多角形のようになっていた。ネロに運ばせたのが悪かったようだ。
ケーキの上にはイチゴが 1 つ乗っている。とりあえず 2 チームで分けるために、いまこのケーキをイチゴを通る直線にそって半分になるようにナイフで切ることが決定した。ケーキを切る前にイチゴを先にとってしまうのは彼らの美意識に反する。

あなたの仕事は 2 次元平面上に与えられる凸多角形 K を原点 (0, 0) を通る直線 L で分割したとき、分割で出来た 2 つの凸多角形の面積が等しくなるように直線 L を定めることである。もし複数あるならいずれかひとつで構わない。

Input

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

N
x1 y1
x2 y2
...
xN yN

N は与えられる凸多角形 K の頂点数である。点 (xi, yi) ( 1 ≤ i ≤ N ) はすべて凸多角形 K を成す頂点の座標であり、互いに異なる。これらは反時計回りの順で与えられる。また、凸多角形 K のどの辺上の点も原点との距離が 1 以上で、凸多角形 K は常に原点を内包する。入力の終了はひとつの0を含む１行で示される。原点を含む、入力で与えられる異なる 3 点は共線となりうることに注意して欲しい。

Constraints

入力はすべて整数

3 ≤ N ≤ 20

-100 ≤ xi ≤ 100 ( 1 ≤ i ≤ N )

-100 ≤ yi ≤ 100 ( 1 ≤ i ≤ N )

テストケースの数は 1,000 を超えない。

Output

以下の形式で直線 L 上の点 A (Ax, Ay) を出力せよ。ただし点 A と原点との距離は 1 以上でなければならない。

Ax Ay

原点とこの点 A を通る直線で凸多角形 K を分割したとき 2 つの凸多角形の面積の差が 10-5 未満でなければならない。点 A の座標は小数点以下 15 桁出力して欲しい。

Sample Input

4
-100 -100
100 -100
100 100
-100 100
4
-99 -100
100 -100
100 100
-99 100
4
-100 -99
100 -99
100 100
-100 100
14
-99 -70
-92 -79
10 -98
37 -100
62 -95
77 -69
88 -47
92 -10
96 28
100 91
42 92
-62 92
-88 91
-98 64
0

Sample Output

100.000000000000000 0.000000000000000
100.000000000000000 0.000000000000000
0.000000000000000 100.000000000000000
-96.983291994836122 66.745111613942484
Problem G: Sports Days

会津大学附属小学校（会津大小）は日本有数の競技プログラマー養成校として有名である。
もちろん、運動会に参加しているときでさえアルゴリズムの修行を欠かせない。

競技プログラミング部部長のあなたはもちろんこの大会でも勝利したい。
今回はある競技に注目する。

ある競技とは会津大小で行われている伝統的な競技だ。
校庭にコーンがn個置いてある。
コーンは4色用意されている。
コーンのいくつかのペアは白線で描かれた矢印で結ばれている。
矢印は片側だけについており、整数が併記されている。

競技者はk人1チームとして行動する。
あるスタート地点のコーンからゴール地点のコーンまで矢印の上をその向きに移動する。
ただし、k人それぞれがゴール地点までの経路は異なる必要がある。

経路1と経路2が異なるというのは、

条件1　経路1と経路2で経由する矢印の本数が等しい場合、経路1でi番目に経由する矢印と経路2でi番目に経由する矢印が異なるようなiが存在すること。

条件2　経路1と経路2で経由する矢印の本数が異なっていること。

のいずれかを満たせば経路が異なっていると言える。

さらに、コーンの辿り方には禁止された色のパターンがあり、スタート地点からゴール地点までの経路でそのパターンを含んでしまった選手はリタイアとなる。
ただし、それ以外の経路はどのような経路を辿ってもよく、何度も同じコーン（スタート地点やゴール地点のコーンを含む）を通って良い。
また、矢印に併記された数字がスコアとして加算されていく。
この競技はより多くのチームメイトがより小さな合計スコアでゴール地点のコーンに辿りつけたチームが勝利となる。

部長のあなたはもちろんプログラミングでこの問題を解決できるはずだ。
ゴールまで移動可能な最大の人数を求めよ。
また、最大人数で辿り着いた時の最小スコアを求めよ。

ただし、いくらでもスコアを小さく出来る場合は -1 を出力せよ。

Input

入力は複数のテストケースから成り立っている。
テストケースの数は20ケースを超えない。

n
col1
col2
...
coln
m
a1 b1 c1
a2 b2 c2
...
am bm cm
k
pattern

n( 2 ≤ n ≤ 100)はコーンの数を表す。
coli(1 ≤ coli ≤ 4)はi番目のコーンの色を示す。
m(0 ≤ m ≤ 1,000) は矢印の数を表す。
ai は矢印の始点のコーンの番号, biは終点のコーンの番号を表し、ciはその矢印のスコアを表す.
また、ひとつのコーンから伸びる矢印は10本までである。
(1 ≤ ai, bi ≤ n, -1,000 ≤ ci ≤ 1,000)
kは競技を行うチームの人数を示す。
(1 ≤ k ≤ 10)
pattern
は長さが10以下の1~4までの数字からなる文字列で、
移動が禁止されているパターンを示す。
スタート地点のコーンは1番目のコーンであり、
n番目のコーンがゴールである。
入力で与えられる数(n, col, m, a, b, c, k)はすべて整数である。
入力の終わりは0を含む1行で示される。

Output

出力は空白で区切られた二つの整数からなる。
1つ目は到達できる人数で、2つ目はその最小コストである。
もし、いくらでもスコアを小さく出来る場合は-1のみを含む１行を出力せよ。
一人も到達できない場合は0 0を出力せよ。

Sample Input

2
1
1
2
1 2 1
2 1 1
1
1111
2
1
1
2
1 2 1
2 1 1
1
11
2
1
1
2
1 2 1
2 1 1
10
1111
2
1
1
2
1 2 1
2 1 1
10
111111
2
1
1
2
1 2 -1
2 1 0
10
11
2
1
1
2
1 2 -1
2 1 0
10
1111
2
1
1
2
1 2 -1
2 1 0
10
12
2
1
1
2
1 2 -1
2 1 0
10
1111111111
0

Sample Output

1 1
0 0
1 1
2 4
0 0
1 -1
-1
4 -10
KND is So Sexy

Problem

KND君は会津大学に在籍する学生プログラマである。彼の胸元はとてもセクシーなことで知られている。

簡単のために胸元から見える肌の部分を図にある二等辺三角形ABCで表す。しかし服にはたるみが生じているため、長さが等しい2辺AC,BC(これらの長さをlとする)には実際にはさらに長さx分余裕がある。はだける部分の面積を増やすため、たるんだ分を引っ張ることで新たにふたつの三角形ADC,BECを作ることにしよう。点D,Eは三角形ABCの外側に存在する。この新しいふたつの三角形はたるみによって生じるもので、辺BEと辺ECの長さの和および辺ADと辺DCの長さの和はl+xでなければならない。あなたはこれら3つの三角形の面積の和Mが最大になるように点D,Eを決める。KND君の隣人であるあなたは彼の胸元がどれ程セクシーなのかを調べるために、a,l,xを入力として服からのぞく肌の最大の面積(M)を計算するプログラムを作成することにした。

Input

入力は複数のテストケースからなる。
ひとつのテストケースは以下の形式で与えられる。
入力の終わりをEOFで示す。

a l x

ここで、

a:三角形ABCの辺ABの長さ

l:三角形ABCの2辺AC,BCの長さ

x:2辺AC,BCにあるたるみ

である。

Constraints

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

入力はすべて整数。

1 ≤ a ≤ 1000

1 ≤ l ≤ 1000

1 ≤ x ≤ 1000

Output

各テストケースにつき最大の面積を1行に出力せよ。この値はジャッジ出力の値と10-5より大きい差を持ってはならない。

Sample Input

2 2 1
2 3 1
3 2 3
2 3 5

Sample Output

3.9681187851
6.7970540913
6.5668891783
13.9527248554
Make KND So Fat

Problem

KND君は会津大学に在籍する学生プログラマである。彼の隣人はとても迷惑なことで知られている。隣人は彼が甘党であることを知り、必要以上に甘味を差し入れて彼を太らせようと画策している。そのために、当の隣人であるあなたは友人からとある甘味処を紹介してもらった。

しかし、その甘味処での商品の販売の仕方は少し変わっている。その販売方法とは、甘味セットと呼ばれる甘味の組を日替わりで販売するというものだ。予算内であればその日に販売されている甘味セットの中から自由に甘味を買うことができる。しかし、甘味セットに含まれる甘味は一種類につき１個しか販売されていない。
また、予算は期間の始めに用意した額から支払い、期間途中での追加予算はないものとする。あなたは友人から教えられた甘味の体重に与える影響の度合いと値段をもとに、ある期間中に一定の予算内で彼の体重を最適に増やす甘味の買い方を計算するプログラムを作成することにした。

Input

入力は複数のテストケースからなる。空行区切りで与えられる。ひとつのテストケースは以下の形式で与えられる。入力の終了をEOFで示す。

s d m
k1
w1,1 p1,1 w1,2 p1,2 ... w1,k p1,k
k2
w2,1 p2,1 w2,2 p2,2 ... w2,k p2,k
...
ks
ws,1 ps,1 ws,2 ps,2 ... ws,k ps,k
f1 f2 ... fd

ここで、

s:甘味セットの種類

d:対象となる期間

m:予算

ki:i番目の甘味セットに含まれる甘味の種類数

wi,j:i番目の甘味セットに含まれるj番目の甘味の体重に与える影響

pi,j:i番目の甘味セットに含まれるj番目の甘味の値段

fi:i日目に販売されている甘味セットの番号(0から始まる)

である。

Constraints

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

入力はすべて整数。

1 ≤ s ≤ d ≤ 100

1 ≤ m ≤ 300

1 ≤ ki ≤ 50

0 ≤ wi,j ≤ 50

0 ≤ pi,j ≤ 300

0 ≤ fi < s

Output

各テストケースにつき予算内で体重に与えられる最大の影響とその影響を与えるために必要な最小の金額を空白区切りで1行に出力せよ。

Sample Input

3 3 100
2
5 20 3 10
2
10 50 12 60
2
8 30 22 100
0 1 2

1 1 30
1
13 8
0

Sample Output

23 100
13 8
KND Runs for Sweets

Problem

KND君は会津大学に在籍する学生プログラマである。彼は甘党であることで知られている。彼はとある市に1年間滞在することになり、その期間中に市内にある N 箇所の甘味処をすべて回りたいと思っている。なのでこの1年間の住む場所は甘味処を回るのに一番適した場所がいいと考えている。彼の隣人であるあなたは、各甘味処への最悪の移動時間が最小になる場所を探す事になった。この甘味処がある市は簡単のため二次元平面で表すことにする。彼は目的の甘味処へのモチベーションの違いにより、単位時間あたりの移動距離が変化する。また、彼はどんな場所にでも（たとえ甘味処と同じ場所であろうと）住むつもりでいる。KND君は甘味に関しては妥協を許さないのである。

Input

入力は複数のテストケースからなる。
ひとつのテストケースは以下のな形式で与えられる。
入力の終了を N = 0 のとき示す。

N
x1 y1 v1
x2 y2 v2
...
xN yN vN

ここで、

N:甘味処の数

xi:i番目の甘味処のx座標

yi:i番目の甘味処のy座標

vi:i番目の甘味処へ移動するときの単位時間あたりの移動距離

である。

Constraints

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

入力はすべて整数。

2 ≤ N ≤ 100

0 ≤ xi, yi ≤ 100

1 ≤ vi ≤ 100 ( 1 ≤ i ≤ N )

xi ≠ xj or yi ≠ yj ( ただし1 ≤ i < j ≤ N )

Output

各テストケースにつき最悪の移動時間の最小値を一行に出力せよ。この値はジャッジ出力の値と10-5より大きい差を持ってはならない。

Sample Input

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

Sample Output

0.70710678
1.06066017
KND Warp

Problem

KND君は会津大学に在籍する学生プログラマだ。彼はその優秀な頭脳をもってワープ装置を開発したことで有名である。ワープ装置とは便利なもので、ある場所から別の場所まで瞬時に移動することができる。彼はこれから地球上に点在するワープ装置を用いて様々な場所を可能な限り早くめぐる旅を計画している。

彼の隣人であるあなたの仕事は3次元空間 (xyz直交座標系) 上に存在するN個のワープ装置をうまく使用して、1からMまでの番号がふられたM個の点を順に通って、M番目の点まで移動するときの最小の所要時間を求めることだ。はじめは1番目の点にいるものとし、どのワープ装置も任意のワープ装置へ時間0で移動できる。ワープ以外の単位距離の移動は単位時間を要する。経由点のクエリはQ個与えられる。

Input

入力は複数のテストケースからなる。
ひとつのテストケースは以下の形式で与えられる。
入力の終わりをN = Q = 0のとき示す。

N Q
x1 y1 z1
x2 y2 z2
...
xN yN zN
M1
x1,1 y1,1 z1,1
x1,2 y1,2 z1,2
...
x1,M y1,M z1,M

M2
x2,1 y2,1 z2,1
x2,2 y2,2 z2,2
...
x2,M y2,M z2,M
...
MQ
xQ,1 yQ,1 zQ,1
xQ,2 yQ,2 zQ,2
...
xQ,M yQ,M zQ,M

ここで、

N:ワープ装置の数

Q:旅のクエリの数

Mi:i番目クエリの旅で訪れる点の数

xi,j,yi,j,zi,j:i番目のクエリの旅で訪れるj番目の点の座標(x,y,z)

である。

Constraints

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

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

入力の半分程度はN≤1000を満たす。

入力に含まれる値はすべて整数。

2≤N≤100,000

1≤Q≤1,000

2≤M≤100

-1,000,000≤(全てのx,y,z座標値)≤1,000,000

ワープ装置は上記の制約を満たす空間中にランダムに分布する(Sample Inputは例外)。

ワープ装置同士、中継点同士、ワープ装置と中継点はそれぞれ重なることがある。

Output

各クエリにつき最小の所要時間を一行に出力せよ。この値はジャッジ出力の値と10-4より大きい差を持ってはならない。

Sample Input

3 2
0 0 0
1 1 1
2 2 2
4
-1 -1 -1
3 3 3
-1 -1 -1
4 4 4
2
1234 5678 9012
1716 6155 9455
0 0

Sample Output

12.124355653
810.001234567

Notes

入力ファイルのサイズは4MB程度になる。入力は高速にしたほうがよいが、たとえばC++であればcinでも十分である。
KND Factory

Problem

KND君は会津大学に在籍する学生プログラマである。彼の住む町の周辺には N 個の町がある。彼は生クリームが大好きなので毎日生クリームを食べるためにある町に工場を建設した。その工場では毎日 F リットルの生クリームが製造される。生クリームは運ぶたびに、移動元の町の気温と移動先の町の気温の絶対差だけ傷んでしまう。困ったことにこの近辺の町の気温は寒暖計によって計測できない。しかしながら調査によって、それぞれの町の気温を変数とした N 個の一次方程式からなる N 元一次連立方程式を導くことができた。あなたはこれを解くことによって各町の気温を知ることができる。また、ある町から他の町へ生クリームを運搬するにはパイプラインを用いる。パイプラインは一日に送ることのできる生クリームの量が限られている。一日に F リットルの生クリームを工場がある町 s からKND君が住む町 t へ生クリームをなるべく良い状態で送りたい。町には0から始まる番号がつけられているものとする。方程式の各項は高々ひとつの変数からなり定数項がひとつある。 F リットルの生クリームはどのような運び方をしても一日以内で任意の町へ送られる。

Input

入力は複数のテストケースからなる。ひとつのテストケースは以下の形式で与えられる。テストケースの数は入力として与えられる。

T
N s t F
a1,1 a1,2 ... a1,N c1
a2,1 a2,2 ... a2,N c2
...
aN,1 aN,2 ... aN,N cN
M1
d1,1 d1,2 ... d1,M1
f1,1 f1,2 ... f1,M1
M2
d2,1 d2,2 ... d2,M2
f2,1 f2,2 ... f2,M2
...
MN
dN,1 dN,2 ... dN,M2
fN,1 fN,2 ... fN,M2

ここで、

T:テストケースの数

N:町の数

s:工場のある町

t:KND君の住む町

F:一日に作られる生クリームの量

ai,j:連立方程式の未知数としてのi番目の方程式中でj番目の町の気温にかかる係数。もしai,j=0ならj番目の町の気温はこの方程式に現れないことになる。以下の例も参照してほしい。

ci:i番目の方程式の定数項

Mi:i番目の町が持っている生クリームを移動させる機械の数

di,j:i番目の町が持っているj番目の機械が生クリームを移動させる先の町

fi,j:i番目の町が持っているj番目の機械が生クリームを1日に移動させられるリットル量

である。

N元一次連立方程式を表す行列の入力例:

a + b = 6 1 1 0 6
3a + 2b + c = 10 => 3 2 1 10
a - 2b + 3c = 6 1 -2 3 6

a,b,cが町0,1,2の気温を表す。

Constraints

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

入力はすべて整数。

0 < T ≤ 40

2 < N ≤ 100

0 ≤ s < N

0 ≤ t < N

s ≠ t

0 < F ≤ 1000

0 ≤ Mi ≤ N

-1000 ≤ ai,j ≤ 1000

0 ≤fi,j< 1000

それぞれの町の気温は一意に定まる。

Output

各テストケースにつき、一日に F リットルの生クリームを工場がある町 s からKND君が住む町 t に運んだとき、生クリームの傷みの和を最小化した値を一行で出力せよ。この値はジャッジ出力の値と10-5より大きい差を持ってはならない。また、町 s から町 t へ F リットルの生クリームを一日に運べない場合はimpossibleを一行で出力せよ。

Sample Input

3
3 0 2 5
1 1 1 6
3 2 1 10
1 -2 3 6
2
1 2
3 3
1
2
3
0
3 0 2 5
1 1 1 6
3 2 1 10
1 -2 3 6
2
1 2
2 2
1
2
2
0
10 2 7 20
8 9 -5 6 -9 5 1 0 4 9 4
3 -1 -8 0 -5 4 3 0 -3 2 4
-4 5 8 -4 1 -8 -6 3 3 5 -7
-7 0 2 5 8 -5 -9 -8 1 -2 -1
3 8 1 -3 8 2 -5 8 -3 4 -4
-2 5 0 -2 -4 4 -3 9 6 -1 -2
4 1 2 -9 3 5 6 -4 4 -1 -4
-4 6 6 9 -2 1 -9 -3 -7 3 -4
1 -1 6 3 1 -5 9 5 -5 -9 -5
-7 4 6 8 8 4 -4 4 -7 -8 -5
5
1 5 0 6 3
15 17 14 7 15
3
1 5 7
6 8 14
10
3 5 3 5 9 5 9 5 1 4
12 6 16 11 16 7 9 3 13 13
10
9 1 5 6 2 5 8 5 9 4
15 8 8 14 13 13 18 1 12 11
5
3 5 0 4 6
14 15 4 14 11
9
5 0 6 2 7 8 8 6 6
6 5 7 17 17 17 17 19 3
9
7 7 2 7 8 4 7 7 0
4 13 16 10 19 17 19 12 19
3
1 5 1
3 7 16
8
5 7 4 9 1 4 6 8
4 3 6 12 6 19 10 1
4
1 3 6 3
5 15 18 14

Sample Output

10.0000000000
impossible
11.9354380207
Wall Breaker KND

Problem

KND君は会津大学に在籍する学生プログラマである。彼はプログラマーであるとともに格闘家でもある。そんな彼は甘党であることで知られてるが、特に生クリームが大好物である。生クリームを食べればコンクリートの壁を数回壊すことができるようになるほどである。そのパワーに興味をもった彼の隣人は、生クリームたっぷりの新商品、「マトクリーム」を用いて実験をすることにした。

その実験は、まず迷路を用意しKND君をそこに閉じ込める。その迷路には鍵がかかった扉、扉を開けるための鍵、マトクリームがそれぞれ1つずつ別のマスに存在する。彼は落ちている鍵を拾い、扉の鍵を開けることで外に脱出することが可能である。鍵を持っていなくても扉があるマスに移動することは可能である。また、マトクリームを食べることで迷路の壁を N 回だけ壊すことができるようになる。ただし外壁を壊して迷路の外に出ることはできない。さて、彼は最小何回のマス移動で迷路を脱出できるだろうか。

サンプル2つの迷路と最短の脱出経路は次の図で示される。SはKND君の初期位置、Mはマトクリーム、Kは鍵、Dは扉を表す。

Input

入力は複数のテストケースからなる。
ひとつのテストケースは以下の形式で与えられる。
入力の終了を2つのゼロを含む行で示す。

(迷路の入力)
xs ys
xm ym
xk yk
xd yd
N

ここで、

迷路の入力:
まず迷路の幅と高さを表す2つの整数 W , H が来る。次に 2 * H - 1 行の入力がある。このうちの奇数行目は横に隣合うマスの間の壁の有無を表す。最初に空白が1つあり、 W - 1 個の1か0が来る。1は壁があること、0は壁がないことを表す。偶数行目は縦に隣合うマスの間の壁の有無を表す。こちらは W 個の1か0が来る。同様に1は壁があること、0は壁がないことを表す。

xs ys:主人公の初期位置のマスの座標

xm ym:マトクリームのマスの座標

xk yk:鍵のマスの座標

xd yd:扉のマスの座標

N:マトクリームをとった場合に迷路の壁を壊せる回数

Constraints

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

入力はすべて整数。

2 ≤ W, H ≤ 20

0 ≤ xs, xm, xk, xd < W

0 ≤ ys, ym, yk, yd < H

0 ≤ N ≤ 100

主人公の初期位置のマスの座標、マトクリームのマスの座標、鍵のマスの座標、扉のマスの座標は互いに別の座標である。

扉に入ることが不可能なデータセットはない。

Output

各テストケースにつきKND君が迷路から脱出する最小のマス移動回数を一行に出力せよ。

Sample Input

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

Sample Output

4
15
Area of Polygons

Polygons are the most fundamental objects in geometric processing.
Complex figures are often represented and handled as polygons
with many short sides.
If you are interested in the processing of geometric data,
you'd better try some programming exercises about basic
operations on polygons.

Your job in this problem is to write a program that computes the area of polygons.

A polygon is represented by a sequence of points that are its vertices.
If the vertices p1, p2, ..., pn are given, line segments connecting
pi and pi+1 (1 <= i <= n-1) are sides of the polygon.
The line segment connecting pn and p1 is also a side of the polygon.

You can assume that the polygon is not degenerate.
Namely, the following facts can be assumed without any input data checking.

No point will occur as a vertex more than once.

Two sides can intersect only at a common endpoint (vertex).

The polygon has at least 3 vertices.

Note that the polygon is not necessarily convex.
In other words, an inner angle may be larger than 180 degrees.

Input

The input contains multiple data sets, each representing a polygon.
A data set is given in the following format.

n
x1 y1
x2 y2
...
xn yn

The first integer n is the number of vertices,
such that 3 <= n <= 50.
The coordinate of a vertex pi is given by (xi, yi).
xi and yi are integers between 0 and 1000 inclusive.
The coordinates of vertices are given in the order
of clockwise visit of them.

The end of input is indicated by a data set with 0 as the value of n.

Output

For each data set, your program should output its sequence number
(1 for the first data set, 2 for the second, etc.) and the area of the polygon separated by a single space. The area should be printed with one digit to the right of the decimal point.

The sequence number and the area should be printed on the same line.
Since your result is checked by an automatic grading program,
you should not insert any extra characters nor lines on the output.

Sample Input

3
1 1
3 4
6 0

7
0 0
10 10
0 20
10 30
0 40
100 40
100 0

0

Output for the Sample Input

1 8.5
2 3800.0
Where's Your Robot?

You have full control over a robot that walks around in a rectangular
field paved with square tiles like a chessboard. There are m
columns of tiles from west to east, and n rows of tiles from
south to north (1 <= m, n <= 100). Each tile is given a pair
of coordinates, such as (i, j), where 1 <= i <= m
and 1 <= j <= n.

Your robot is initially on the center of the tile at (1, 1), that is,
one at the southwest corner of the field, facing straight north. It
can move either forward or backward, or can change its facing
direction by ninety degrees at a time, according to a command you give
to it, which is one of the following.

FORWARD k

Go forward by k tiles to its facing direction (1 <= k < 100).

BACKWARD k

Go backward by k tiles, without changing its facing direction
(1 <= k < 100).

RIGHT

Turn to the right by ninety degrees.

LEFT

Turn to the left by ninety degrees.

STOP

Stop.

While executing either a "FORWARD" or a
"BACKWARD" command, the robot may bump against the
wall surrounding the field. If that happens, the robot gives up the
command execution there and stands at the center of the tile right in
front of the wall, without changing its direction.

After finishing or giving up execution of a given command, your robot
will stand by for your next command.

Input

The input consists of one or more command sequences. Each input line
has at most fifty characters.

The first line of a command sequence contains two integer numbers
telling the size of the field, the first number being the number of
columns and the second being the number of rows. There might be white
spaces (blanks and/or tabs) before, in between, or after the two numbers.
Two zeros as field size indicates the end of input.

Each of the following lines of a command sequence contains a command
to the robot. When a command has an argument, one or more white
spaces are put between them. White spaces may also appear before and
after the command and/or its argument.

A command sequence is terminated by a line containing a
"STOP" command. The next command sequence, if any,
starts from the next line.

Output

The output should be one line for each command sequence in the input.
It should contain two numbers i and j of the coordinate pair
(i, j), in this order, of the tile on which your robot stops.
Two numbers should be separated by one white spaces.

Sample Input

6 5
FORWARD 3
RIGHT
FORWARD 5
LEFT
BACKWARD 2
STOP
3 1
FORWARD 2
STOP
0 0

Output for the Sample Input

6 2
1 1
Unable Count

I would, if I could,

If I couldn't how could I?

I couldn't, without I could, could I?

Could you, without you could, could ye?

Could ye? could ye?

Could you, without you could, could ye?

It is true, as this old rhyme says, that we can only DO what
we can DO and we cannot DO what we cannot DO. Changing some of
DOs with COUNTs, we have another statement that we can only COUNT
what we can DO and we cannot COUNT what we cannot DO, which looks
rather false. We could count what we could do as well as we could
count what we couldn't do. Couldn't we, if we confine ourselves
to finite issues?

Surely we can count, in principle, both what we can do and
what we cannot do, if the object space is finite. Yet, sometimes
we cannot count in practice what we can do or what we cannot do.
Here, you are challenged, in a set of all positive integers up
to (and including) a given bound n, to count
all the integers that cannot be represented by a formula of
the form a*i+b*j, where a and
b are given positive integers and i and j
are variables ranging over non-negative integers. You are requested
to report only the result of the count, i.e. how many integers
are not representable.
For example, given n = 7, a = 2, b = 5,
you should answer 2, since 1 and 3 cannot be represented in a
specified form, and the other five numbers are representable as follows:

2 = 2*1 + 5*0, 4 = 2*2 + 5*0, 5 = 2*0 + 5*1,
6 = 2*3 + 5*0, 7 = 2*1 + 5*1.

Input

The input is a sequence of lines. Each line consists of three integers,
n, a and b, in this order, separated by a
space. The integers n, a and b are
all positive and at most one million, except those in the last
line. The last line consists of three zeros.

Output

For each input line except the last one, your program should
write out a line that contains only the result of the count.

Sample Input

10 2 3
10 2 5
100 5 25
0 0 0

Output for the Sample Input

1
2
80