提出 #7638392


ソースコード 拡げる

import sys
readline = sys.stdin.readline
readlines = sys.stdin.readlines
sys.setrecursionlimit(10 ** 7)

from collections import deque

N,K,*P=map(int,sys.stdin.read().split())

Kmin = []
deq = deque()
for i in range(K):
    while deq and P[deq[-1]] > P[i]:
        deq.pop()
    deq.append(i)
Kmin.append(deq[0])
for i in range(K,N):
    if deq[0] == i-K:
        deq.popleft()
    while deq and P[deq[-1]] > P[i]:
        deq.pop()
    deq.append(i)
    Kmin.append(deq[0])

Kmax = []
deq = deque()
for i in range(K):
    while deq and P[deq[-1]] < P[i]:
        deq.pop()
    deq.append(i)
Kmax.append(deq[0])
for i in range(K,N):
    if deq[0] == i-K:
        deq.popleft()
    while deq and P[deq[-1]] < P[i]:
        deq.pop()
    deq.append(i)
    Kmax.append(deq[0])

is_new_seq = [Kmin[i] != i or Kmax[i+1] != i+K for i in range(N-K)]

is_new_seq

import itertools
incr = [1 if x<y else 0 for x,y in zip(P,P[1:])]
incr_cum = [0] + list(itertools.accumulate(incr))
is_stable = [y-x==K-1 for x,y in zip(incr_cum,incr_cum[K-1:])]

is_new_seq = [x&(not y) for x,y in zip(is_new_seq,is_stable[1:])]

answer = sum(is_new_seq)
if not is_stable[0]:
    answer += 1
    if any(is_stable):
        answer += 1
else:
    answer += 1
print(answer)

提出情報

提出日時
問題 B - Sorting a Segment
ユーザ maspy
言語 Python (3.4.3)
得点 700
コード長 1301 Byte
結果 AC
実行時間 488 ms
メモリ 43832 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 700 / 700
結果
AC × 3
AC × 32
セット名 テストケース
Sample sample-01.txt, sample-02.txt, sample-03.txt
All 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, sample-01.txt, sample-02.txt, sample-03.txt
ケース名 結果 実行時間 メモリ
01-01.txt AC 20 ms 3316 KiB
01-02.txt AC 21 ms 3316 KiB
01-03.txt AC 362 ms 24324 KiB
01-04.txt AC 310 ms 31584 KiB
01-05.txt AC 191 ms 17152 KiB
01-06.txt AC 249 ms 26404 KiB
01-07.txt AC 449 ms 43832 KiB
01-08.txt AC 466 ms 32376 KiB
01-09.txt AC 442 ms 43832 KiB
01-10.txt AC 476 ms 40240 KiB
01-11.txt AC 436 ms 31352 KiB
01-12.txt AC 444 ms 43708 KiB
01-13.txt AC 456 ms 40260 KiB
01-14.txt AC 488 ms 30968 KiB
01-15.txt AC 409 ms 43068 KiB
01-16.txt AC 412 ms 38332 KiB
01-17.txt AC 357 ms 26104 KiB
01-18.txt AC 325 ms 33040 KiB
01-19.txt AC 339 ms 33500 KiB
01-20.txt AC 343 ms 37208 KiB
01-21.txt AC 304 ms 32260 KiB
01-22.txt AC 329 ms 25208 KiB
01-23.txt AC 302 ms 30776 KiB
01-24.txt AC 308 ms 29576 KiB
01-25.txt AC 216 ms 25560 KiB
01-26.txt AC 233 ms 26312 KiB
01-27.txt AC 308 ms 24852 KiB
01-28.txt AC 234 ms 25432 KiB
01-29.txt AC 224 ms 25432 KiB
sample-01.txt AC 21 ms 3316 KiB
sample-02.txt AC 21 ms 3316 KiB
sample-03.txt AC 21 ms 3316 KiB