提出 #53129902


ソースコード 拡げる

from collections import deque

class SlidingMinimumElement:
    def __init__(self, a):
        self.left = 0
        self.right = 0
        self.a = a
        self.que = deque()

    def min(self, l, r):
        for i in range(self.right, r):
            while self.que and self.a[self.que[-1]] > self.a[i]:
                self.que.pop()
            self.que.append(i)
        while self.que and self.que[0] < l:
            self.que.popleft()
        self.left = l
        self.right = r
        return self.a[self.que[0]]

class SlidingMaximumElement:
    def __init__(self, a):
        self.left = 0
        self.right = 0
        self.a = a
        self.que = deque()

    def max(self, l, r):
        for i in range(self.right, r):
            while self.que and self.a[self.que[-1]] < self.a[i]:
                self.que.pop()
            self.que.append(i)
        while self.que and self.que[0] < l:
            self.que.popleft()
        self.left = l
        self.right = r
        return self.a[self.que[0]]

n, k = map(int, input().split())
p = list(map(int, input().split()))
index_p = [0] * n
for i in range(n):
    index_p[p[i] - 1] = i

sl_min = SlidingMinimumElement(index_p)
sl_max = SlidingMaximumElement(index_p)
ans = float('inf')

for i in range(n - k + 1):
    l = i
    r = i + k
    tmp_min = sl_min.min(l, r)
    tmp_max = sl_max.max(l, r)
    ans = min(ans, tmp_max - tmp_min)


print(ans)

提出情報

提出日時
問題 D - Permutation Subsequence
ユーザ obakedesuyone
言語 Python (PyPy 3.10-v7.3.12)
得点 425
コード長 1475 Byte
結果 AC
実行時間 188 ms
メモリ 115972 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 425 / 425
結果
AC × 3
AC × 28
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 02_random2_00.txt, 02_random2_01.txt, 02_random2_02.txt, 02_random2_03.txt, 02_random2_04.txt, 03_handmade_00.txt, 03_handmade_01.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 70 ms 77000 KiB
00_sample_01.txt AC 73 ms 76832 KiB
00_sample_02.txt AC 73 ms 76888 KiB
01_random_00.txt AC 135 ms 99868 KiB
01_random_01.txt AC 188 ms 112020 KiB
01_random_02.txt AC 133 ms 93772 KiB
01_random_03.txt AC 177 ms 111304 KiB
01_random_04.txt AC 176 ms 110896 KiB
01_random_05.txt AC 174 ms 111600 KiB
01_random_06.txt AC 170 ms 102852 KiB
01_random_07.txt AC 153 ms 111460 KiB
01_random_08.txt AC 133 ms 106960 KiB
01_random_09.txt AC 186 ms 112048 KiB
01_random_10.txt AC 110 ms 90412 KiB
01_random_11.txt AC 154 ms 111460 KiB
01_random_12.txt AC 110 ms 86060 KiB
01_random_13.txt AC 163 ms 111484 KiB
01_random_14.txt AC 112 ms 94168 KiB
01_random_15.txt AC 178 ms 112072 KiB
01_random_16.txt AC 121 ms 111724 KiB
01_random_17.txt AC 71 ms 76836 KiB
02_random2_00.txt AC 121 ms 115972 KiB
02_random2_01.txt AC 169 ms 112148 KiB
02_random2_02.txt AC 173 ms 112192 KiB
02_random2_03.txt AC 179 ms 112324 KiB
02_random2_04.txt AC 143 ms 111376 KiB
03_handmade_00.txt AC 142 ms 112272 KiB
03_handmade_01.txt AC 175 ms 113744 KiB