結果
| 問題 |
No.1170 Never Want to Walk
|
| コンテスト | |
| ユーザー |
trineutron
|
| 提出日時 | 2020-08-15 15:43:16 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 892 bytes |
| コンパイル時間 | 80 ms |
| コンパイル使用メモリ | 13,056 KB |
| 実行使用メモリ | 32,772 KB |
| 最終ジャッジ日時 | 2024-10-10 17:59:10 |
| 合計ジャッジ時間 | 10,565 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 30 RE * 7 |
ソースコード
class UnionFind:
par = []
def __init__(self, n):
self.par = [i for i in range(n)]
def find(self, n):
if self.par[n] == n:
return n
p = self.find(self.par[n])
self.par[n] = p
return p
def merge(self, m, n):
m = self.find(m)
n = self.find(n)
self.par[m] = n
n, a, b = map(int, input().split())
x = list(map(int, input().split()))
v = [0] * (n + 1)
l = 0
r = 0
t = UnionFind(n)
for i in range(n):
while l < n and x[l] < x[i] + a:
l += 1
while r < n and x[r] <= x[i] + b:
r += 1
if l == r:
continue
v[l] += 1
v[r - 1] -= 1
t.merge(i, l)
for i in range(n):
v[i + 1] += v[i]
if v[i] > 0:
t.merge(i, i + 1)
y = [0] * n
s = [0] * n
for i in range(n):
y[i] = t.find(i)
s[y[i]] += 1
for i in range(n):
print(s[y[i]])
trineutron