結果
問題 | No.2873 Kendall's Tau |
ユーザー |
👑 |
提出日時 | 2024-09-07 00:31:04 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,010 ms / 4,500 ms |
コード長 | 1,769 bytes |
コンパイル時間 | 378 ms |
コンパイル使用メモリ | 82,400 KB |
実行使用メモリ | 156,672 KB |
最終ジャッジ日時 | 2024-09-07 00:31:23 |
合計ジャッジ時間 | 18,114 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 30 |
ソースコード
class BIT:def __init__(self, n):self.n = nself.data = [0] * (n + 1)if n == 0:self.n0 = 0else:self.n0 = 1 << (n.bit_length() - 1)def sum_(self, i):s = 0while i > 0:s += self.data[i]i -= i & -ireturn sdef sum(self, l, r=-1):if r == -1:return self.sum_(l)else:return self.sum_(r) - self.sum_(l)def get(self, i):return self.sum(i, i + 1)def add(self, i, x):i += 1while i <= self.n:self.data[i] += xi += i & -idef lower_bound(self, x):if x <= 0:return 0i = 0k = self.n0while k > 0:if i + k <= self.n and self.data[i + k] < x:x -= self.data[i + k]i += kk //= 2return i + 1n = int(input())xy = [list(map(int, input().split())) for _ in range(n)]xy.sort(key=lambda x: x[0])Y_ = sorted(set(y for _, y in xy))dic = {y: i for i, y in enumerate(Y_)}add = []b = xy[0][0]bit = BIT(len(Y_))p = 0q = 0for x, y in xy:y = dic[y]if b == x:add.append(y)else:for y_ in add:bit.add(y_, 1)add = [y]b = xp += bit.sum(y)q += bit.sum(y + 1, len(Y_))X = [x for x, _ in xy]X.sort()r = n * (n - 1) // 2row = 0b = X[0]for x in X:if b == x:r -= rowrow += 1else:row = 1b = xY = [y for _, y in xy]Y.sort()s = n * (n - 1) // 2row = 0b = Y[0]for y in Y:if b == y:s -= rowrow += 1else:row = 1b = yans = (p - q) / ((r * s) ** 0.5)print(ans)