前書き
アリーナは、敵がカバーするために使用する高層ビルが点在する平地です。あなたとあなたの敵はレーザーでお互いを撃ちます。全員がジェットパックを携帯し、飛行を許可します。
どの敵にレーザーを当てることができ、どの敵に隠れていますか?
問題
最初に、アリーナのサイズは、n
1行の整数で指定されます。次のn
行にはn
、行ごとにスペースで区切られた整数が含まれています。各整数は、その場所の建物の高さを表します。各建物は長方形の固体で、1単位×1単位、高さ単位です。
次に、あなたの場所は、3つの浮動小数点数として単一の行に与えられていますx
、y
、z
。
最後に、敵の数はm
1行の整数で与えられます。次のm
行には、行ごとにスペースで区切られた3つの浮動小数点数が含まれています。これらは表し x
、y
とz
敵の座標を。座標系は次のように定義されます。
x
都市入力で左から右に測定されますy
上から下に測定されますz
ゼロから測定されます
敵ごとに、妨害されていない線があなたからその敵に引ける場合、正の整数を出力します。それ以外の場合は、負の整数を出力します。出力を新しい行で区切ります。
サンプル入力
「#」で示されるコメントは、各行が何をするのかをすばやく確認するのに役立ちます。実際の入力には存在しません。
5 # Size of the map
0 0 0 0 0 # Buildings
0 0 0 0 0 # Buildings
4 4 4 4 4 # Buildings
0 0 0 0 0 # Buildings
0 0 0 0 0 # Buildings
2.5 0.0 4.0 # Your location
3 # Number of enemies
2.5 5.0 0.1 # Enemy location
2.5 5.0 5.0 # Enemy location
0.0 2.7 4.5 # Enemy location
サンプル出力
上記のサンプル入力では、次を出力します。
-1
1
1
仮定
- 0 <<
n
100 - 0 <<
m
100 - 0 <=
x
<=n
- 0 <=
y
<=n
- 0 <=
z
<n
- プレイヤーは、建物の角、縁、または側面の上または内側には配置されません。
- 敵の視線は、建物の角、縁、または側面に接することはありません
- プレーヤーは障害物ではありません