結果
| 問題 | No.1786 Maximum Suffix Median (Online) |
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-31 17:53:12 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,132 bytes |
| コンパイル時間 | 175 ms |
| コンパイル使用メモリ | 82,780 KB |
| 実行使用メモリ | 115,460 KB |
| 最終ジャッジ日時 | 2025-03-31 17:54:28 |
| 合計ジャッジ時間 | 4,953 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 5 TLE * 1 -- * 24 |
ソースコード
import sys
def main():
input = sys.stdin.read
data = list(map(int, input().split()))
N = data[0]
A_prime = data[1:N+1]
ans = []
A = []
prev_ans = 0
K = 200 # Heuristic value
for i in range(N):
current = A_prime[i] ^ prev_ans if i != 0 else A_prime[i]
A.append(current)
max_median = current # The subarray of length 1
# Consider subarrays of length up to K
start = max(0, i - K + 1)
for j in range(start, i):
# subarray A[j..i]
m = i - j + 1
k = (m + 1) // 2
# We need to get the k-th smallest element
# To avoid sorting each time, we can maintain a list and use a selection algorithm
# But since m is small (<= K), sorting is acceptable
sub = A[j:i+1]
sub_sorted = sorted(sub)
median = sub_sorted[k-1]
if median > max_median:
max_median = median
ans.append(max_median)
prev_ans = max_median
for a in ans:
print(a)
if __name__ == '__main__':
main()
lam6er