結果
| 問題 | No.133 カードゲーム |
| コンテスト | |
| ユーザー |
apprec
|
| 提出日時 | 2020-05-30 15:54:25 |
| 言語 | Kotlin (2.3.20) |
| 結果 |
AC
|
| 実行時間 | 245 ms / 5,000 ms |
| コード長 | 2,005 bytes |
| 記録 | |
| コンパイル時間 | 14,433 ms |
| コンパイル使用メモリ | 489,872 KB |
| 実行使用メモリ | 57,868 KB |
| 最終ジャッジ日時 | 2026-05-08 02:12:08 |
| 合計ジャッジ時間 | 21,410 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge3_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 19 |
ソースコード
//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))
}
apprec