from collections import deque
from sys import setrecursionlimit
from math import ceil, floor, sqrt
from itertools import permutations
def solve():
n, m = map(int, input().split(" "))
a = []
for i in range(n): a.append(int(input()) - m * (i+1))
dp = [-float('inf')] * (n+1)
dp[0] = 0
for i in range(n):
l, r = 0, n-1
while r-l>1:
mid = (l+r)//2
if a[i] <= dp[mid]: l = mid
else: r = mid
if a[i] <= dp[l]: dp[r] = max(a[i], dp[r])
for i in range(n, -1, -1):
if dp[i] > -float('inf'):
print(n - i)
return
"""
a[i] <= a[i+1] + m
a[i] - mi >= a[i+1] - (m+1)i
"""
solve()
컴파일 시 표준 출력 (stdout) 메시지
Compiling 'triusis.py'...
=======
adding: __main__.pyc (deflated 32%)
=======
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |