結果
| 問題 | No.165 四角で囲え! |
| コンテスト | |
| ユーザー |
noko2250
|
| 提出日時 | 2015-03-15 23:38:55 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,366 bytes |
| 記録 | |
| コンパイル時間 | 193 ms |
| コンパイル使用メモリ | 82,520 KB |
| 実行使用メモリ | 84,740 KB |
| 最終ジャッジ日時 | 2024-06-28 22:58:26 |
| 合計ジャッジ時間 | 12,681 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 4 |
| other | TLE * 1 -- * 18 |
ソースコード
#Created on 2015/03/15 ans
import bisect
[N, B] = map(int, input().split())
X = []
Y = []
P = []
for _ in range(N) :
[x, y, p] = map(int, input().split())
X.append(x)
Y.append(y)
P.append(p)
xs = sorted(set(X), key=X.index)
ys = sorted(set(Y), key=Y.index)
points = [[0]*(N+1) for _ in range(N+1)]
counts = [[0]*(N+1) for _ in range(N+1)]
for i in range(N) :
x = bisect.bisect_left(xs, X[i])
y = bisect.bisect_left(ys, Y[i])
points[y][x] += P[i]
counts[y][x] += 1
for i in range(N+1) :
for j in range(N+1) :
if i > 0 :
points[i][j] += points[i-1][j]
counts[i][j] += counts[i-1][j]
if j > 0 :
points[i][j] += points[i][j-1]
counts[i][j] += counts[i][j-1]
if i > 0 and j > 0 :
points[i][j] -= points[i-1][j-1]
counts[i][j] -= counts[i-1][j-1]
def get_sum(L, a, b, c, d) :
ret = 0
ret += L[c][d]
if a > 0 : ret -= L[a-1][d]
if b > 0 : ret -= L[c][b-1]
if a > 0 and b > 0 : ret += L[a-1][b-1]
return ret
ans = 0
#(i,j) (k, l)
for i in range(N+1) :
for j in range(N+1) :
for k in range(i+1, N+1) :
for l in range(j+1, N+1) :
if get_sum(points,i,j,k,l) <= B :
ans = max(ans, get_sum(counts,i,j,k,l))
print(ans)
noko2250