結果
問題 |
No.133 カードゲーム
|
ユーザー |
![]() |
提出日時 | 2020-05-30 15:54:25 |
言語 | Kotlin (2.1.0) |
結果 |
AC
|
実行時間 | 398 ms / 5,000 ms |
コード長 | 2,005 bytes |
コンパイル時間 | 16,289 ms |
コンパイル使用メモリ | 450,400 KB |
実行使用メモリ | 56,564 KB |
最終ジャッジ日時 | 2024-11-07 18:38:50 |
合計ジャッジ時間 | 27,050 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 19 |
コンパイルメッセージ
Main.kt:67:10: warning: parameter 'args' is never used fun main(args: Array<String>) { ^ Main.kt:68:9: warning: variable 'N' is never used val N = readInt() ^
ソースコード
//package Qy import java.util.* import java.math.* import java.lang.Math.* import java.nio.IntBuffer private val readString: ()->String = {readLine()!!} private val readInt: ()->Int = {readLine()!!.toInt()} private val readLong: ()->Long = {readLine()!!.toLong()} private val readIntArray: ()->IntArray = {readLine()!!.split(' ').map{it.toInt()}.toIntArray()} private val readLongArray: ()->LongArray = {readLine()!!.split(' ').map{it.toLong()}.toLongArray()} private val errPrintln: (String)->Unit = {msg -> System.err.println(msg)} private val MOD = 1e9.toLong()+7 private val INF = Int.MAX_VALUE/2 private val LINF = Long.MAX_VALUE/2 private fun permutation(A: IntArray): List<IntArray> { val ary = A.sorted() val N = ary.size val used = BooleanArray(N){false} val hm = HashMap<IntBuffer, IntArray>() val ptn = ArrayList<Int>(0) fun dfs(n: Int) { if (n >= N) { val value = ptn.toIntArray() val key = IntBuffer.wrap(value) hm[key] = value } for (i in 0 until N) { if (used[i]) continue used[i] = true ptn.add(ary[i]) dfs(n+1) ptn.removeAt(ptn.lastIndex) used[i] = false } } dfs(0) val res = ArrayList<IntArray>() for (key in hm.keys.sorted()) { res.add(hm[key]!!) } return res.toList() } private fun solveY(A: IntArray, B: IntArray): Double { val a = A.sorted() val bPatterns = permutation(B) var aWin = 0 for (bPattern in bPatterns) { var aw = 0; var bw = 0; var draw = 0 a.forEachIndexed { i, v -> if (v > bPattern[i]) aw++ else if (v < bPattern[i]) bw++ else draw++ } if (aw > bw) aWin++ } return aWin.toDouble() / bPatterns.size } fun main(args: Array<String>) { val N = readInt() val A = readIntArray() val B = readIntArray() val ans = solveY(A, B) println("%.8f".format(ans)) }