結果
| 問題 |
No.755 Zero-Sum Rectangle
|
| コンテスト | |
| ユーザー |
maspy
|
| 提出日時 | 2020-02-19 15:30:08 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 1,329 ms / 2,000 ms |
| コード長 | 798 bytes |
| コンパイル時間 | 342 ms |
| コンパイル使用メモリ | 12,544 KB |
| 実行使用メモリ | 51,300 KB |
| 最終ジャッジ日時 | 2024-10-08 01:45:33 |
| 合計ジャッジ時間 | 18,894 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 11 TLE * 1 |
ソースコード
#!/usr/bin/env python3
# %%
import numpy as np
stdin = open(0)
# %%
data = np.fromstring(stdin.read(), np.int64, sep=' ')
# %%
N, M = data[:2]
A = data[2: 2 + M * M].reshape(M, M)
XY = data[-N - N:] - 1
# %%
def zerosum_1D(A, i):
"""count zerosum ranges including A[i]"""
n = len(A)
Acum = np.zeros(n + 1, np.int64)
Acum[1:] = A.cumsum()
R = Acum[i + 1:]
L = Acum[: i + 1]
L.sort()
R.sort()
cnt = np.searchsorted(L, R, 'right') - np.searchsorted(L, R, 'left')
return cnt.sum()
# %%
Acum = A.cumsum(axis=0)
# %%
def solve(x, y):
ret = 0
for i in range(x + 1):
for j in range(x, M):
B = Acum[j] - Acum[i] + A[i]
ret += zerosum_1D(B, y)
return ret
# %%
for x, y in XY.reshape(-1, 2):
print(solve(x, y))
maspy