結果
問題 |
No.777 再帰的ケーキ
|
ユーザー |
![]() |
提出日時 | 2019-01-11 23:46:04 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,447 ms / 2,000 ms |
コード長 | 656 bytes |
コンパイル時間 | 355 ms |
コンパイル使用メモリ | 82,168 KB |
実行使用メモリ | 137,304 KB |
最終ジャッジ日時 | 2024-11-30 21:43:58 |
合計ジャッジ時間 | 12,793 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 33 |
ソースコード
from bisect import * N = int(input()) A = sorted((tuple(map(int, input().split())) for _ in range(N)), key=lambda x: (x[0],-x[1])) P = [0]*N G = [0]*N t = sorted(range(N), key=lambda x: A[x][1]) x = -1 for i in range(N)[::-1]: j = t[i] P[j] = i if x>=0 and A[j][1]==A[x][1]: G[j] = G[x] else: G[j] = i+1 x = j B = [0]*(N+2) def U(i, v): while i <= N: B[i] = max(B[i], v) i += i&-i def Q(i): v = 0 while i > 0: v = max(v, B[i]) i -= i&-i return v for i in range(N)[::-1]: _, b, c = A[i] j = N-G[i] v = Q(j) j = N-P[i] U(j, v+c) print(max(B))