結果

問題 No.5020 Averaging
ユーザー clam010clam010
提出日時 2024-02-25 16:59:29
言語 Kotlin
(1.9.23)
結果
AC  
実行時間 335 ms / 1,000 ms
コード長 2,083 bytes
コンパイル時間 18,238 ms
コンパイル使用メモリ 457,396 KB
実行使用メモリ 54,776 KB
スコア 18,105,840
最終ジャッジ日時 2024-02-25 17:04:49
合計ジャッジ時間 33,110 ms
ジャッジサーバーID
(参考情報)
judge11 / judge13
純コード判定しない問題か言語
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 308 ms
54,640 KB
testcase_01 AC 305 ms
54,636 KB
testcase_02 AC 327 ms
54,764 KB
testcase_03 AC 328 ms
54,772 KB
testcase_04 AC 310 ms
54,756 KB
testcase_05 AC 327 ms
54,648 KB
testcase_06 AC 304 ms
54,656 KB
testcase_07 AC 304 ms
54,764 KB
testcase_08 AC 303 ms
54,768 KB
testcase_09 AC 306 ms
54,768 KB
testcase_10 AC 302 ms
54,644 KB
testcase_11 AC 327 ms
54,772 KB
testcase_12 AC 304 ms
54,772 KB
testcase_13 AC 302 ms
54,760 KB
testcase_14 AC 308 ms
54,632 KB
testcase_15 AC 325 ms
54,772 KB
testcase_16 AC 324 ms
54,644 KB
testcase_17 AC 305 ms
54,648 KB
testcase_18 AC 309 ms
54,632 KB
testcase_19 AC 325 ms
54,764 KB
testcase_20 AC 330 ms
54,636 KB
testcase_21 AC 306 ms
54,768 KB
testcase_22 AC 327 ms
54,648 KB
testcase_23 AC 328 ms
54,644 KB
testcase_24 AC 327 ms
54,772 KB
testcase_25 AC 301 ms
54,764 KB
testcase_26 AC 306 ms
54,768 KB
testcase_27 AC 307 ms
54,776 KB
testcase_28 AC 305 ms
54,636 KB
testcase_29 AC 306 ms
54,632 KB
testcase_30 AC 306 ms
54,632 KB
testcase_31 AC 308 ms
54,772 KB
testcase_32 AC 303 ms
54,624 KB
testcase_33 AC 307 ms
54,644 KB
testcase_34 AC 307 ms
54,644 KB
testcase_35 AC 304 ms
54,640 KB
testcase_36 AC 304 ms
54,644 KB
testcase_37 AC 303 ms
54,644 KB
testcase_38 AC 329 ms
54,776 KB
testcase_39 AC 335 ms
54,632 KB
testcase_40 AC 306 ms
54,640 KB
testcase_41 AC 312 ms
54,656 KB
testcase_42 AC 304 ms
54,768 KB
testcase_43 AC 328 ms
54,776 KB
testcase_44 AC 306 ms
54,652 KB
testcase_45 AC 305 ms
54,772 KB
testcase_46 AC 307 ms
54,760 KB
testcase_47 AC 326 ms
54,640 KB
testcase_48 AC 319 ms
54,760 KB
testcase_49 AC 307 ms
54,632 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.*
import kotlin.math.*
fun main(){
  val N = readLine()!!.toInt()
  val cardList = mutableListOf<Pair<Long,Long>>()
  repeat(N){
    val (a,b) = readLine()!!.split(" ").map{it.toLong()}
    cardList.add(Pair(a,b))
  }
  val c = 500000000000000000L
  val rlist = mutableListOf<Pair<Int,Double>>()
  var zIdx = -1
  for(i in 0..N-1){
    val fValue = abs(cardList[i].first-c).toDouble()
    val bValue = abs(cardList[i].second-c).toDouble()
    rlist.add(Pair(i,sqrt(fValue*fValue+bValue*bValue)))
  }
  rlist.sortBy{it.second}
  for(i in 0..N-1){
    if(rlist[i].first==0)zIdx=i
  }
  val ansList = mutableListOf<Pair<Int,Int>>()

  val g = cardList.toMutableList()
  val zFront = g[0].first.toDouble()
  val zBack  = g[0].second.toDouble()
  val baseDist = sqrt(zFront*zFront+zBack*zBack)
  for(i in 0..(N-1)/2-1){
    if(2*i+1<zIdx)continue
    val xFront = g[rlist[2*i].first].first.toDouble()
    val xBack  = g[rlist[2*i].first].second.toDouble()
    val yFront = g[rlist[2*i+1].first].first.toDouble()
    val yBack  = g[rlist[2*i+1].first].second.toDouble()
    val nFront = (xFront+yFront)/2.0
    val nBack = (xBack+yBack)/2.0
    val newDist = sqrt(nFront*nFront+nBack*nBack)
    if(newDist<baseDist){
      ansList.add(Pair(rlist[2*i].first,rlist[2*i+1].first))
      val nPair = Pair(nFront.toLong(),nBack.toLong())
      g[rlist[2*i].first]=nPair
      g[rlist[2*i+1].first]=nPair
    }
  }
  val slist = mutableListOf<Pair<Int,Double>>()
  for(i in 0..N-1){
    val fValue = abs(g[i].first-c).toDouble()
    val bValue = abs(g[i].second-c).toDouble()
    slist.add(Pair(i,sqrt(fValue*fValue+bValue*bValue)))
  }
  slist.sortBy{it.second}

  val stack = ArrayDeque<Int>()
  var count = ansList.size
  for(i in 0..N-1){
    if(count>=50)break
    if(slist[i].first==0)break
    stack.add(slist[i].first)
    count++
  }
  for(i in 0..stack.size-1){
    val p = stack.removeLast()
    ansList.add(Pair(0,p))
  }
  println(ansList.size)
  for(i in 0..ansList.size-1){
    val u = ansList[i].first+1
    val v = ansList[i].second+1
    println("$u $v")
  }
}
0