結果
| 問題 |
No.707 書道
|
| コンテスト | |
| ユーザー |
tsuchinaga
|
| 提出日時 | 2019-03-22 15:40:40 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 5 ms / 2,000 ms |
| コード長 | 905 bytes |
| コンパイル時間 | 13,431 ms |
| コンパイル使用メモリ | 220,424 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-19 02:24:16 |
| 合計ジャッジ時間 | 12,179 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 6 |
ソースコード
package main
import (
"fmt"
"math"
)
func main() {
var h, w int
_, _ = fmt.Scan(&h, &w)
type p struct {
x, y int
}
// 立ち位置
pos := make([]p, 0)
for i := 1; i <= h; i++ {
pos = append(pos, p{0, i})
pos = append(pos, p{w + 1, i})
}
for i := 1; i <= w; i++ {
pos = append(pos, p{i, 0})
pos = append(pos, p{i, h + 1})
}
// 黒い位置
black := make([]p, 0)
line := ""
for i := 0; i < h; i++ {
_, _ = fmt.Scan(&line)
for j, c := range line {
if c == '1' {
black = append(black, p{j + 1, i + 1})
}
}
}
// fmt.Println(pos)
// fmt.Println(black)
// 総当たりで一番短い距離を探す
min := math.MaxFloat64
for _, po := range pos {
time := 0.0
for _, b := range black {
time += math.Sqrt(float64(po.x-b.x)*float64(po.x-b.x) + float64(po.y-b.y)*float64(po.y-b.y))
}
if min > time {
min = time
}
}
fmt.Printf("%.8f\n", min)
}
tsuchinaga