結果
問題 | No.1296 OR or NOR |
ユーザー | semisagi |
提出日時 | 2020-11-20 23:14:36 |
言語 | Swift (5.10.0) |
結果 |
AC
|
実行時間 | 2,236 ms / 3,000 ms |
コード長 | 1,896 bytes |
コンパイル時間 | 9,175 ms |
コンパイル使用メモリ | 135,688 KB |
実行使用メモリ | 42,844 KB |
最終ジャッジ日時 | 2024-07-23 13:49:40 |
合計ジャッジ時間 | 49,689 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 8 ms
9,344 KB |
testcase_01 | AC | 9 ms
9,344 KB |
testcase_02 | AC | 660 ms
39,860 KB |
testcase_03 | AC | 634 ms
38,968 KB |
testcase_04 | AC | 1,250 ms
41,148 KB |
testcase_05 | AC | 972 ms
41,276 KB |
testcase_06 | AC | 981 ms
40,372 KB |
testcase_07 | AC | 945 ms
37,868 KB |
testcase_08 | AC | 953 ms
39,576 KB |
testcase_09 | AC | 946 ms
39,708 KB |
testcase_10 | AC | 1,008 ms
41,444 KB |
testcase_11 | AC | 823 ms
41,040 KB |
testcase_12 | AC | 827 ms
39,148 KB |
testcase_13 | AC | 871 ms
40,408 KB |
testcase_14 | AC | 2,236 ms
41,924 KB |
testcase_15 | AC | 2,127 ms
41,844 KB |
testcase_16 | AC | 2,036 ms
41,884 KB |
testcase_17 | AC | 822 ms
42,260 KB |
testcase_18 | AC | 849 ms
42,384 KB |
testcase_19 | AC | 826 ms
41,448 KB |
testcase_20 | AC | 673 ms
36,656 KB |
testcase_21 | AC | 666 ms
36,548 KB |
testcase_22 | AC | 567 ms
37,464 KB |
testcase_23 | AC | 570 ms
37,348 KB |
testcase_24 | AC | 606 ms
37,376 KB |
testcase_25 | AC | 606 ms
35,704 KB |
testcase_26 | AC | 676 ms
35,484 KB |
testcase_27 | AC | 674 ms
37,424 KB |
testcase_28 | AC | 653 ms
37,080 KB |
testcase_29 | AC | 660 ms
35,516 KB |
testcase_30 | AC | 2,108 ms
42,844 KB |
testcase_31 | AC | 2,020 ms
41,504 KB |
testcase_32 | AC | 2,076 ms
41,864 KB |
testcase_33 | AC | 2,077 ms
42,772 KB |
testcase_34 | AC | 2,110 ms
42,516 KB |
ソースコード
struct Scanner { private var elements = [String]() private var index = 0 mutating func peek() -> String { while elements.count == index { elements = readLine()!.split(separator: " ").map(String.init) index = 0 } return elements[index] } mutating func next() -> String { defer { index += 1 } return peek() } mutating func nextInt() -> Int { return Int(next())! } mutating func nextInts(_ n: Int) -> [Int] { return (0 ..< n).map { _ in nextInt() } } mutating func nextDouble() -> Double { return Double(next())! } } extension Int { func test(_ k: Int) -> Bool { return self >> k & 1 == 1 } } var scanner = Scanner() let N = scanner.nextInt() let A = scanner.nextInts(N) let Q = scanner.nextInt() let B = scanner.nextInts(Q) var last = [Int?](repeating: nil, count: 60) for i in 0 ..< 60 { for j in (0 ..< N).reversed() { if A[j].test(i) { last[i] = j break } } } func solve(_ b: Int) -> Int? { var constraints = [Int: Bool]() for i in last.indices { if let last = last[i] { if let c = constraints[last] { if !b.test(i) != c { return nil } } else { constraints[last] = !b.test(i) } } else { if let c = constraints[0] { if b.test(i) != c { return nil } } else { constraints[0] = b.test(i) } } } var answer = 0 var x = false for (_, y) in constraints.sorted(by: { $0.key > $1.key }) { if x != y { answer += 1 x = y } } return answer } for k in 0 ..< Q { print(solve(B[k]) ?? -1) }