結果
| 問題 | No.165 四角で囲え! |
| コンテスト | |
| ユーザー |
noko2250
|
| 提出日時 | 2015-03-15 23:51:57 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,389 bytes |
| 記録 | |
| コンパイル時間 | 676 ms |
| コンパイル使用メモリ | 82,436 KB |
| 実行使用メモリ | 84,940 KB |
| 最終ジャッジ日時 | 2024-06-28 23:00:05 |
| 合計ジャッジ時間 | 12,685 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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(list(set(X)))
ys = sorted(list(set(Y)))
points = [[0]*len(xs) for _ in range(len(ys))]
counts = [[0]*len(xs) for _ in range(len(ys))]
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(len(ys)) :
for j in range(len(xs)) :
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(len(ys)) :
for j in range(len(xs)) :
for k in range(i, len(ys)) :
for l in range(j, len(xs)) :
if get_sum(points,i,j,k,l) <= B :
ans = max(ans, get_sum(counts,i,j,k,l))
print(ans)
noko2250