結果
| 問題 |
No.989 N×Mマス計算(K以上)
|
| ユーザー |
norioc
|
| 提出日時 | 2025-06-29 20:50:14 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 144 ms / 2,000 ms |
| コード長 | 2,055 bytes |
| コンパイル時間 | 477 ms |
| コンパイル使用メモリ | 82,328 KB |
| 実行使用メモリ | 87,476 KB |
| 最終ジャッジ日時 | 2025-06-29 20:50:18 |
| 合計ジャッジ時間 | 3,014 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 18 |
ソースコード
from bisect import bisect_left, bisect_right
def ceildiv(a: int, b: int) -> int:
return (a + b - 1) // b
class Sorted:
def __init__(self, xs: list):
self.xs = sorted(xs)
def __len__(self):
return len(self.xs)
def ilt(self, x):
p = bisect_left(self.xs, x)
if p == 0: return None
return p - 1
def ile(self, x):
p = bisect_right(self.xs, x)
if p == 0: return None
return p - 1
def igt(self, x):
p = bisect_right(self.xs, x)
if p == len(self.xs): return None
return p
def ige(self, x):
p = bisect_left(self.xs, x)
if p == len(self.xs): return None
return p
def lt(self, x, default=None):
"""Find the largest element < x, or default if it doesn't exist."""
p = self._lt(x)
if p is None: return default
return self.xs[p]
def le(self, x, default=None):
"""Find the largest element <= x, or default if it doesn't exist."""
p = self._le(x)
if p is None: return default
return self.xs[p]
def gt(self, x, default=None):
"""Find the smallest element > x, or default if it doesn't exist."""
p = self._gt(x)
if p is None: return default
return self.xs[p]
def ge(self, x, default=None):
"""Find the smallest element >= x, or default if it doesn't exist."""
p = self._ge(x)
if p is None: return default
return self.xs[p]
N, M, K = map(int, input().split())
s = input().split()
op = s[0]
B = [int(x) for x in s[1:]]
A = []
for _ in range(N):
A.append(int(input()))
def calc_add():
res = 0
bb = Sorted(B)
for a in A:
p = bb.ige(K - a)
if p is None: continue
res += len(bb) - p
return res
def calc_mul():
res = 0
bb = Sorted(B)
for a in A:
p = bb.ige(ceildiv(K, a))
if p is None: continue
res += len(bb) - p
return res
if op == '+':
print(calc_add())
else:
print(calc_mul())
norioc