結果
| 問題 | 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))
            
            
            
        