結果
| 問題 |
No.168 ものさし
|
| コンテスト | |
| ユーザー |
バカらっく
|
| 提出日時 | 2019-11-29 09:53:14 |
| 言語 | Kotlin (2.1.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,600 bytes |
| コンパイル時間 | 14,448 ms |
| コンパイル使用メモリ | 449,500 KB |
| 実行使用メモリ | 62,428 KB |
| 最終ジャッジ日時 | 2024-11-20 21:17:26 |
| 合計ジャッジ時間 | 22,062 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 WA * 1 |
| other | AC * 6 WA * 13 |
コンパイルメッセージ
Main.kt:4:10: warning: parameter 'arr' is never used
fun main(arr:Array<String>) {
^
ソースコード
import java.math.BigDecimal
import java.util.*
fun main(arr:Array<String>) {
val pointCount = readLine()!!.toInt()
var list = (1..pointCount).map {id -> readLine()!!.split(" ").map { it.toLong() }.let { Point(id, it[0].toDouble(), it[1].toDouble()) } }.toMutableList()
list.forEach {
it.distanceStart = dist(it, list.first())
it.distanceGoal = dist(it, list.last())
}
val startPoint = list.first()
val goalPoint = list.last()
list = list.filter { it.distanceGoal <= startPoint.distanceGoal && it.distanceStart <= goalPoint.distanceStart }.sortedBy { it.distanceStart }.toMutableList()
val map = PriorityQueue<Point>(kotlin.Comparator { t, t2 -> t.distanceStart.compareTo(t2.distanceStart) })
map.add(list.first())
list.removeAt(0)
for(p in list) {
for(p2 in map) {
val d = dist(p2, p)
if(d <= p2.distanceStart) {
p.distanceStart = p2.distanceStart
break
} else if(d < p.distanceStart) {
p.distanceStart = d
}
}
map.add(p)
}
println(goalPoint.distanceStart)
}
fun dist(p1:Point, p2:Point):Long {
var dist = Math.pow(Math.abs(p1.x - p2.x), 2.toDouble())
dist += Math.pow(Math.abs(p1.y - p2.y), 2.toDouble())
var ret = Math.ceil(Math.sqrt(dist))
if(ret * ret < dist) {
ret += 1
}
if(ret % 10 > 0) {
ret += 10
}
return ret.toLong() / 10 * 10
}
class Point(val id:Int, val x:Double, val y:Double) {
var distanceStart: Long = 0
var distanceGoal:Long = 0
}
バカらっく