結果
| 問題 |
No.2395 区間二次変換一点取得
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-07-28 21:39:29 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 1,685 ms / 2,000 ms |
| コード長 | 534 bytes |
| コンパイル時間 | 161 ms |
| コンパイル使用メモリ | 12,416 KB |
| 実行使用メモリ | 29,824 KB |
| 最終ジャッジ日時 | 2024-10-06 18:03:03 |
| 合計ジャッジ時間 | 15,620 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 |
ソースコード
N, B, Q = map(int, input().split())
bit = [0] * (N+10)
def add(x, v):
x += 1
while x < len(bit):
bit[x] += v
x += x & -x
def getSum(x):
x += 1
ans = 0
while x:
ans += bit[x]
x -= x & -x
return ans
xyz = [(1,1,1)] * 110000
for i in range(1, 110000):
x, y, z = xyz[i-1]
xyz[i] = (x + 1) % B, (3 * y + 2 * (x+1) * z) % B, 3 * z % B
for _ in range(Q):
l, m, r = map(int, input().split())
add(l, 1)
add(r + 1, -1)
print(*xyz[getSum(m)])