---
# System prepended metadata

title: Reply Codechallenge 2021

---

# Reply Codechallenge 2021

# 問題概要

## 概要

H * Wのグリッドを考える。

N個のビルが既にグリッドに置いてある。
M個のアンテナを持っている(まだグリッドに置かれていない)。

あなたの仕事は、アンテナをグリッドに配置して(なお、アンテナは置かなくても良い)、スコアを最大化することである。

ビルは
- パラメーター1 $B_L$
- パラメーター2 $B_C$

アンテナはそれぞれ
- 通信距離 $A_R$
- パラメーター $A_C$

を持つ。

## スコア計算

スコアは、**ビルごと**の「良さ」の総和である。ただし、全部のビルが通信できるアンテナを一つ以上持つ時、スコア R が追加で貰える。

### ビル b の良さ

アンテナ a とビル b の相性 s(a, b) は以下。

- s(a, b) = $B_C[b] \times A_C[a] - B_L[b] \times \mathrm{dist}(b, a)$

ビル b の良さは、ビルまでの距離が$A_R$以下のアンテナ全部についての、max s(a, b) である。

通信できるアンテナが一つもない場合は、ビルbの良さは0。(ビルの良さが負になりうることもある？)



## 注釈

- 距離は全部マンハッタン距離
- ビルの置いてある場所は全部distinct
- アンテナはビルと同じマスに置ける。
- アンテナ同士を同じマスに置くことは出来ない。

## 入力形式

```
W H
N M R
Bx1 By1 Bl1 Bc1
Bx2 By2 Bl2 Bc2
:
BxN ByN BlN BcN
Ar1 Ac1
Ar2 Ac2
:
ArN AcN
```

## 出力形式

```
M
id_1 Ax[id_1] Ay[id_1]
id_2 Ax[id_2] Ay[id_2]
:
id_M Ax[id_M] Ay[id_M]
```

実際は空行は消すこと

## スコア

スコア

# 便利ツール

## calcscore(予定)
置き場: ```Dropbox/Hashcode2020/2021/maroon/calcscore/calcscore.cpp```
使い方: `./calcscore infile outfile`
stdout に得点が出てくる
invalidな入力を入れるとぶっ壊れたりぶっ壊れなかったり

`g++ calcscore.cpp -o calcscore -std=c++14 -O2`

## watch
各自のディレクトリ下にa.outもしくはa_hoge.outとかのファイル名で出力を出しておくと勝手に収集する

# ケース解析

## A (W=15, H=10, N=5, M=4, R=100)
```
Bl Average : 2.6, Max: 4, Min: 1
Bc Average : 26.6, Max: 44, Min: 14
Ar Average : 2.25, Max: 4, Min: 1
Ac Average : 50, Max: 100, Min: 10
MaxScore: 13300
```

## B (W=400, H=400, N=50000, M=1014, R=4e7)

```
Bl Average : 50.0925, Max: 100, Min: 0
Bc Average : 49.86006, Max: 100, Min: 0
Ar Average : 2.87376725838264, Max: 100, Min: 0
Ac Average : 1983.71104536489, Max: 4992, Min: 500
MaxScore: 12445070976
```

## C (W=600, H=600, N=60000, M=60000, R=5e7)

N=Mなのがポイント！！！！多分マッチング的な完全解があるやつだとおもいます(chokudai)
```
Bl Average : 0, Max: 0, Min: 0
Bc Average : 50.0318666666667, Max: 100, Min: 0
Ar Average : 0, Max: 0, Min: 0
Ac Average : 500.63425, Max: 1000, Min: 1
MaxScore: 3001912000
```


## D (W=1200, H=1200, N=40000, M=1123, R=5e7)

$B_L = B_C$

ビルが固まってるところとそうでもないところがある（ビジュアライザ情報）

```
Bl Average : 55.106325, Max: 100, Min: 10
Bc Average : 55.106325, Max: 100, Min: 10
Ar Average : 7.28317008014248, Max: 100, Min: 0
Ac Average : 2351.53873552983, Max: 4994, Min: 1
MaxScore: 11008039482
```


## E (W=2000, H=2000, N=200000, M=6257, R=3e7)

```
Bl Average : 50.022235, Max: 76, Min: 23
Bc Average : 49.51128, Max: 86, Min: 23
Ar Average : 2.62090458686271, Max: 119, Min: 0
Ac Average : 1854.79319162538, Max: 7990, Min: 1
MaxScore: 79119025440
```


## F (W=6000, H=6000, N=350000, M=32515, R=2e8)


```
Bl Average : 49.0598457142857, Max: 97, Min: 2
Bc Average : 59.3232942857143, Max: 100, Min: 2
Ar Average : 3.33003229278794, Max: 200, Min: 0
Ac Average : 2450.33110871905, Max: 5000, Min: 1
MaxScore: 103815765000

Arが100以上：75個
Arが50以上：78個
Arが30以上：159個

```
