結果
問題 | No.2382 Amidakuji M |
ユーザー | shobonvip |
提出日時 | 2023-07-14 21:31:45 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 157 ms / 2,000 ms |
コード長 | 1,000 bytes |
コンパイル時間 | 136 ms |
コンパイル使用メモリ | 81,872 KB |
実行使用メモリ | 107,568 KB |
最終ジャッジ日時 | 2024-09-16 06:21:27 |
合計ジャッジ時間 | 2,750 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 37 ms
52,352 KB |
testcase_01 | AC | 34 ms
52,224 KB |
testcase_02 | AC | 34 ms
52,096 KB |
testcase_03 | AC | 96 ms
89,600 KB |
testcase_04 | AC | 134 ms
102,900 KB |
testcase_05 | AC | 63 ms
77,956 KB |
testcase_06 | AC | 102 ms
91,788 KB |
testcase_07 | AC | 83 ms
84,276 KB |
testcase_08 | AC | 55 ms
72,704 KB |
testcase_09 | AC | 135 ms
96,768 KB |
testcase_10 | AC | 157 ms
103,712 KB |
testcase_11 | AC | 92 ms
86,444 KB |
testcase_12 | AC | 127 ms
99,552 KB |
testcase_13 | AC | 36 ms
52,564 KB |
testcase_14 | AC | 35 ms
52,352 KB |
testcase_15 | AC | 33 ms
51,968 KB |
testcase_16 | AC | 33 ms
52,608 KB |
testcase_17 | AC | 34 ms
51,968 KB |
testcase_18 | AC | 33 ms
52,352 KB |
testcase_19 | AC | 151 ms
107,568 KB |
testcase_20 | AC | 152 ms
107,348 KB |
testcase_21 | AC | 148 ms
107,436 KB |
ソースコード
class BIT: def query(self, m): res = 0 while m > 0: res += self.bit[m] m -= m&(-m) return res def sum(self, a, b): return self.query(b)-self.query(a) def sumall(self): bitlen = self.bitlen-1 return self.query(bitlen) def add(self, m, x): m += 1 bitlen = len(self.bit) while m <= bitlen-1: self.bit[m] += x m += m&(-m) return def search(self, a): tmpsum = 0 i = 0 k = (self.bitlen-1).bit_length() while k >= 0: tmpk = 2**k if i+tmpk <= self.bitlen-1: if tmpsum+self.bit[i+tmpk] < a: tmpsum += self.bit[i+tmpk] i += tmpk k = k-1 return i+1 def __init__(self, a): self.bitlen = a self.bit = [0]*a n, m = map(int,input().split()) p = list(map(int,input().split())) for i in range(n): p[i] -= 1 bit = BIT(n+4) ans = 0 for i in range(n): ans += bit.sum(p[i]+1, n+2); bit.add(p[i], 1); k = (ans + m -1) // m k *= m if k % 2 == ans % 2: print(k) exit() k += m if k % 2 == ans % 2: print(k) exit() print(-1)