結果
問題 | No.2382 Amidakuji M |
ユーザー |
![]() |
提出日時 | 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 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
class BIT:def query(self, m):res = 0while m > 0:res += self.bit[m]m -= m&(-m)return resdef sum(self, a, b):return self.query(b)-self.query(a)def sumall(self):bitlen = self.bitlen-1return self.query(bitlen)def add(self, m, x):m += 1bitlen = len(self.bit)while m <= bitlen-1:self.bit[m] += xm += m&(-m)returndef search(self, a):tmpsum = 0i = 0k = (self.bitlen-1).bit_length()while k >= 0:tmpk = 2**kif i+tmpk <= self.bitlen-1:if tmpsum+self.bit[i+tmpk] < a:tmpsum += self.bit[i+tmpk]i += tmpkk = k-1return i+1def __init__(self, a):self.bitlen = aself.bit = [0]*an, m = map(int,input().split())p = list(map(int,input().split()))for i in range(n):p[i] -= 1bit = BIT(n+4)ans = 0for i in range(n):ans += bit.sum(p[i]+1, n+2);bit.add(p[i], 1);k = (ans + m -1) // mk *= mif k % 2 == ans % 2:print(k)exit()k += mif k % 2 == ans % 2:print(k)exit()print(-1)