結果
問題 | No.1234 典型RMQ |
ユーザー |
![]() |
提出日時 | 2020-09-18 21:59:46 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 954 ms / 2,000 ms |
コード長 | 1,599 bytes |
コンパイル時間 | 273 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 95,360 KB |
最終ジャッジ日時 | 2024-11-09 01:53:44 |
合計ジャッジ時間 | 20,358 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
import sysreadline = sys.stdin.readlinewrite = sys.stdout.writeN = int(input())INF = 2**72-1LV = (N-1).bit_length()N0 = 2**LVdata = [0]*(2*N0)lazy = [0]*(2*N0)def gindex(l, r):L = l + N0R = r + N0lm = (L // (L & -L)) >> 1rm = (R // (R & -R)) >> 1while L < R:if R <= rm:yield Rif L <= lm:yield LL >>= 1R >>= 1while L:yield LL >>= 1def propagates(*ids):for i in reversed(ids):v = lazy[i-1]if not v:continuelazy[2*i-1] += vlazy[2*i] += vdata[2*i-1] += vdata[2*i] += vlazy[i-1] = 0def update(l, r, x):L = N0 + lR = N0 + rwhile L < R:if R & 1:R -= 1lazy[R-1] += xdata[R-1] += xif L & 1:lazy[L-1] += xdata[L-1] += xL += 1L >>= 1R >>= 1for i in gindex(l, r):data[i-1] = min(data[2*i-1], data[2*i]) + lazy[i-1]def query(l, r):propagates(*gindex(l, r))L = N0 + lR = N0 + rs = INFwhile L < R:if R & 1:R -= 1s = min(s, data[R-1])if L & 1:s = min(s, data[L-1])L += 1L >>= 1R >>= 1return sa = list(map(int, input().split()))for i in range(N):update(i, i + 1, a[i])Q = int(input())for q in range(Q):k, s, t, x = map(int, input().split())if k == 2:print(query(s - 1, t))else:update(s - 1, t, x)