提出 #44605778
ソースコード 拡げる
import bisect
n, l, r = map(int, input().split())
a = list(map(int, input().split()))
class SegmentTree(): # 0-indexed で書く.
def __init__(self, n):
self.siz = 1
while self.siz < n:
self.siz *= 2
self.dat = [0 for _ in range(2 * self.siz)]
def update(self, p, x):
p += self.siz
self.dat[p] = x
while p >= 2:
p //= 2
self.dat[p] = min(self.dat[p * 2], self.dat[(p * 2) + 1]) # 問題依存
def rpd(self, l, r, a, b, nw):
# st.rpd(l, r, 1, st.siz + 1, 1)で求まる.
if r <= a or b <= l:
return 10 ** 10 # 問題依存
if l <= a and b <= r:
return self.dat[nw]
m = (a + b) // 2
al = self.rpd(l, r, a, m, nw * 2)
ar = self.rpd(l, r, m, b, nw * 2 + 1)
return min(al, ar) # 問題依存
st = SegmentTree(n)
dp = [10 ** 9 for _ in range(n)]
dp[0] = 0
for i in range(n):
st.update(i, dp[i])
for i in range(1, n):
bl = a[i] - r
br = a[i] - l
il = bisect.bisect_left(a, bl)
ir = bisect.bisect_right(a, br)
rqr = st.rpd(il, ir, 0, st.siz, 1)
dp[i] = rqr + 1
st.update(i, dp[i])
print(dp[n - 1])
提出情報
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
1000 / 1000 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
sample_01.txt |
| All |
corner_01.txt, corner_02.txt, corner_03.txt, corner_04.txt, corner_05.txt, corner_06.txt, killer_01.txt, killer_02.txt, min_01.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, sample_01.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| corner_01.txt |
AC |
356 ms |
93264 KiB |
| corner_02.txt |
AC |
428 ms |
107876 KiB |
| corner_03.txt |
AC |
381 ms |
93248 KiB |
| corner_04.txt |
AC |
426 ms |
101660 KiB |
| corner_05.txt |
AC |
424 ms |
107972 KiB |
| corner_06.txt |
AC |
486 ms |
108108 KiB |
| killer_01.txt |
AC |
532 ms |
107960 KiB |
| killer_02.txt |
AC |
584 ms |
107848 KiB |
| min_01.txt |
AC |
49 ms |
61988 KiB |
| random_01.txt |
AC |
616 ms |
107880 KiB |
| random_02.txt |
AC |
674 ms |
107996 KiB |
| random_03.txt |
AC |
595 ms |
107944 KiB |
| random_04.txt |
AC |
533 ms |
108168 KiB |
| random_05.txt |
AC |
499 ms |
107776 KiB |
| random_06.txt |
AC |
492 ms |
108008 KiB |
| sample_01.txt |
AC |
49 ms |
61992 KiB |