Submission #25825782
Source Code Expand
import sys
import numpy as np
from numba import njit, i8
MOD = 998_244_353
@njit
def get_sum(bit, i):
"""sum on [0, i)"""
s = 0
while i:
s += bit[i]
i -= i & -i
return s
@njit
def add(bit, i, x=1):
assert 0 <= i < len(bit) - 1
i += 1
while i < len(bit):
bit[i] += x
i += i & -i
@njit((i8[:], i8[:, :]), cache=True)
def main(A, query):
# 座標圧縮
X = np.unique(np.concatenate((A, query[:, 1])))
A = np.searchsorted(X, A)
query[:, 1] = np.searchsorted(X, query[:, 1])
# 個数と和を fenwick tree で持つ
bit_c = np.zeros(len(X) + 10, np.int64)
bit_s = np.zeros(len(X) + 10, np.int64)
total_c = 0
total_s = 0
ANS = 0
def upd(i, k):
nonlocal ANS, total_c, total_s
# 多重集合に X[i] を k 個追加する。
left_c = get_sum(bit_c, i)
left_s = get_sum(bit_s, i)
right_c = total_c - left_c
right_s = total_s - left_s
diff_sum = left_c * X[i] - left_s
diff_sum += right_s - right_c * X[i]
# 2 で割る
if diff_sum & 1:
diff_sum += MOD
diff_sum //= 2
ANS = (ANS + k * diff_sum) % MOD
add(bit_c, i, k)
add(bit_s, i, X[i] * k)
total_c += k
total_s += X[i] * k
for i in A:
upd(i, 1)
for q in range(len(query)):
x, y = query[q]
x -= 1
upd(A[x], -1)
A[x] = y
upd(A[x], 1)
print(ANS)
N, Q = map(int, sys.stdin.readline().split())
A = np.array(sys.stdin.readline().split(), np.int64)
query = np.array(sys.stdin.read().split(), np.int64).reshape(Q, 2)
main(A, query)
Submission Info
| Submission Time | |
|---|---|
| Task | E - Infinite Operations |
| User | maspy |
| Language | Python (3.8.2) |
| Score | 800 |
| Code Size | 1794 Byte |
| Status | AC |
| Exec Time | 1121 ms |
| Memory | 184056 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 800 / 800 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 01_sample_01.txt, 01_sample_02.txt |
| All | 01_sample_01.txt, 01_sample_02.txt, 02_small_01.txt, 02_small_02.txt, 02_small_03.txt, 02_small_04.txt, 02_small_05.txt, 02_small_06.txt, 02_small_07.txt, 02_small_08.txt, 02_small_09.txt, 03_rand_01.txt, 03_rand_02.txt, 03_rand_03.txt, 03_rand_04.txt, 03_rand_05.txt, 03_rand_06.txt, 03_rand_07.txt, 03_rand_08.txt, 03_rand_09.txt, 03_rand_10.txt, 03_rand_11.txt, 03_rand_12.txt, 03_rand_13.txt, 03_rand_14.txt, 03_rand_15.txt, 03_rand_16.txt, 03_rand_17.txt, 03_rand_18.txt, 03_rand_19.txt, 03_rand_20.txt, 03_rand_21.txt, 03_rand_22.txt, 03_rand_23.txt, 03_rand_24.txt, 03_rand_25.txt, 03_rand_26.txt, 03_rand_27.txt, 03_rand_28.txt, 03_rand_29.txt, 03_rand_30.txt, 04_rand_dense_01.txt, 04_rand_dense_02.txt, 04_rand_dense_03.txt, 04_rand_dense_04.txt, 04_rand_dense_05.txt, 04_rand_dense_06.txt, 04_rand_dense_07.txt, 04_rand_dense_08.txt, 04_rand_dense_09.txt, 04_rand_dense_10.txt, 05_handmade_01.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01_sample_01.txt | AC | 478 ms | 106480 KiB |
| 01_sample_02.txt | AC | 458 ms | 107784 KiB |
| 02_small_01.txt | AC | 462 ms | 106932 KiB |
| 02_small_02.txt | AC | 461 ms | 107664 KiB |
| 02_small_03.txt | AC | 459 ms | 107660 KiB |
| 02_small_04.txt | AC | 457 ms | 107004 KiB |
| 02_small_05.txt | AC | 464 ms | 106996 KiB |
| 02_small_06.txt | AC | 460 ms | 106456 KiB |
| 02_small_07.txt | AC | 458 ms | 107004 KiB |
| 02_small_08.txt | AC | 459 ms | 107260 KiB |
| 02_small_09.txt | AC | 461 ms | 107240 KiB |
| 03_rand_01.txt | AC | 1048 ms | 182540 KiB |
| 03_rand_02.txt | AC | 945 ms | 178756 KiB |
| 03_rand_03.txt | AC | 936 ms | 184056 KiB |
| 03_rand_04.txt | AC | 943 ms | 179516 KiB |
| 03_rand_05.txt | AC | 990 ms | 179332 KiB |
| 03_rand_06.txt | AC | 1102 ms | 183240 KiB |
| 03_rand_07.txt | AC | 1012 ms | 179184 KiB |
| 03_rand_08.txt | AC | 1007 ms | 180032 KiB |
| 03_rand_09.txt | AC | 920 ms | 177992 KiB |
| 03_rand_10.txt | AC | 1034 ms | 182060 KiB |
| 03_rand_11.txt | AC | 945 ms | 179440 KiB |
| 03_rand_12.txt | AC | 1009 ms | 179028 KiB |
| 03_rand_13.txt | AC | 1017 ms | 178424 KiB |
| 03_rand_14.txt | AC | 1062 ms | 180768 KiB |
| 03_rand_15.txt | AC | 896 ms | 177412 KiB |
| 03_rand_16.txt | AC | 911 ms | 178936 KiB |
| 03_rand_17.txt | AC | 1105 ms | 183736 KiB |
| 03_rand_18.txt | AC | 1007 ms | 179844 KiB |
| 03_rand_19.txt | AC | 1059 ms | 181808 KiB |
| 03_rand_20.txt | AC | 955 ms | 180264 KiB |
| 03_rand_21.txt | AC | 1092 ms | 182244 KiB |
| 03_rand_22.txt | AC | 936 ms | 179616 KiB |
| 03_rand_23.txt | AC | 1071 ms | 181712 KiB |
| 03_rand_24.txt | AC | 993 ms | 178600 KiB |
| 03_rand_25.txt | AC | 1121 ms | 182148 KiB |
| 03_rand_26.txt | AC | 1117 ms | 182652 KiB |
| 03_rand_27.txt | AC | 1068 ms | 181884 KiB |
| 03_rand_28.txt | AC | 991 ms | 180444 KiB |
| 03_rand_29.txt | AC | 988 ms | 179764 KiB |
| 03_rand_30.txt | AC | 942 ms | 178792 KiB |
| 04_rand_dense_01.txt | AC | 856 ms | 178836 KiB |
| 04_rand_dense_02.txt | AC | 836 ms | 180280 KiB |
| 04_rand_dense_03.txt | AC | 868 ms | 181364 KiB |
| 04_rand_dense_04.txt | AC | 820 ms | 178452 KiB |
| 04_rand_dense_05.txt | AC | 848 ms | 183652 KiB |
| 04_rand_dense_06.txt | AC | 840 ms | 179576 KiB |
| 04_rand_dense_07.txt | AC | 804 ms | 178984 KiB |
| 04_rand_dense_08.txt | AC | 900 ms | 181836 KiB |
| 04_rand_dense_09.txt | AC | 807 ms | 178728 KiB |
| 04_rand_dense_10.txt | AC | 902 ms | 181872 KiB |
| 05_handmade_01.txt | AC | 863 ms | 168512 KiB |