結果
| 問題 |
No.3085 Easy Problems
|
| コンテスト | |
| ユーザー |
nasutarou1341
|
| 提出日時 | 2025-04-05 12:06:43 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,412 bytes |
| コンパイル時間 | 592 ms |
| コンパイル使用メモリ | 82,704 KB |
| 実行使用メモリ | 144,236 KB |
| 最終ジャッジ日時 | 2025-04-05 12:06:51 |
| 合計ジャッジ時間 | 6,377 ms |
|
ジャッジサーバーID (参考情報) |
judge6 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | TLE * 1 -- * 30 |
ソースコード
import bisect
class nibutan:
@staticmethod
def nibutan(ok, ng, op):
while abs(ok - ng) > 1:
mid = (ok + ng) // 2
if op(mid): ok = mid
else: ng = mid
return ok
@staticmethod
def lt(L, n):
"""Lのうちn未満の最大の要素"""
if len(L) == 0: return -1
if L[0] >= n: return -1
return bisect.bisect_left(L, n) - 1
@staticmethod
def le(L, n):
"""Lのうちn以下の最大の要素"""
if len(L) == 0: return -1
if L[0] > n: return -1
return bisect.bisect_right(L, n) - 1
@staticmethod
def gt(L, n):
"""Lのうちn超過の最小の要素"""
if len(L) == 0: return 0
if L[-1] <= n: return len(L)
return bisect.bisect_right(L, n)
@staticmethod
def ge(L, n):
"""Lのうちn以上の最小の要素"""
if len(L) == 0: return 0
if L[-1] < n: return len(L)
return bisect.bisect_left(L, n)
N = int(input())
AB = [list(map(int, input().split())) for _ in range(N)]
Q = int(input())
XY = [list(map(int, input().split())) for _ in range(Q)]
A = [AB[i][0] for i in range(N)]
A.sort()
M = 10 ** 5 + 1
AL = [None for _ in range(M)]
for a, b in AB:
if AL[b] == None: AL[b] = []
AL[b].append(a)
for i in range(M):
if AL[b] != None:
AL[b].sort()
for x, y in XY:
a = nibutan.le(A, x) + 1
if AL[y] != None:
b = nibutan.le(AL[y], x) + 1
else:
b = 0
ans = a - b
print(ans)
nasutarou1341