結果
| 問題 |
No.133 カードゲーム
|
| コンテスト | |
| ユーザー |
apprec
|
| 提出日時 | 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))
}
apprec