結果

問題 No.90 品物の並び替え
ユーザー keib
提出日時 2019-03-06 23:36:50
言語 Swift
(6.0.3)
結果
AC  
実行時間 68 ms / 5,000 ms
コード長 1,127 bytes
コンパイル時間 3,500 ms
コンパイル使用メモリ 186,492 KB
実行使用メモリ 16,128 KB
最終ジャッジ日時 2024-11-30 13:42:02
合計ジャッジ時間 2,865 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 9
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

import Foundation
struct Bits {
init(_ bits: UInt64) {
self.bits = bits
}
var bits: UInt64
func test(_ place: Int) -> Bool {
let mask : UInt64 = 0x0000000000000001 << place
return mask == (mask & self.bits)
}
mutating func reset(_ place:Int) {
let mask : UInt64 = 0x0000000000000001 << place
self.bits ^= mask
}
}
let nm = readLine()!.split(separator: " ").map { Int($0)! }
let n: Int = nm.first!
let m: Int = nm.last!
var rules = Dictionary<Int, Int>()
(0 ..< m).forEach { _ in
let values = readLine()!.split(separator: " ").map { Int($0)! }
rules[(values[0] * 10 + values[1])] = values[2]
}
func solve(bits: Bits)-> Int {
var ret = 0
for i in 0 ..< n {
guard bits.test(i) else {
continue
}
var next = bits
next.reset(i)
var sum = solve(bits: next)
for j in 0 ..< n {
guard next.test(j) else {
continue
}
guard let score = rules[i * 10 + j] else {
continue
}
sum += score
}
ret = Swift.max(sum, ret)
}
return ret
}
let result = solve(bits: Bits(0x1FF >> (Int(9) - n)))
print(result)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0