結果
| 問題 |
No.2500 Products in a Range
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-10-13 22:13:04 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,663 bytes |
| コンパイル時間 | 316 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 76,800 KB |
| 最終ジャッジ日時 | 2024-09-15 17:56:19 |
| 合計ジャッジ時間 | 8,443 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 59 WA * 2 |
ソースコード
n,l,r = map(int,input().split())
A = list(map(int,input().split()))
minus = []
plus = []
zero = []
for a in A:
if a < 0:
minus.append(a)
elif a > 0:
plus.append(a)
else:
zero.append(a)
minus.sort()
plus.sort()
ans = 1
def solve1(plus,minus):
ans = 1
minus += zero
minus = minus[::-1]
plus = zero + plus
for i in range(len(minus)-1):
for j in range(i+1,len(minus)):
l1,l2 = minus[i],minus[i+1]
r1,r2 = minus[j],minus[j-1]
if l1*l2 >= l and r1*r2 <= r:
ans = max(ans,j-i+1)
for i in range(len(plus)-1):
for j in range(i+1,len(plus)):
l1,l2 = plus[i],plus[i+1]
r1,r2 = plus[j],plus[j-1]
if l1*l2 >= l and r1*r2 <= r:
ans = max(ans,j-i+1)
return ans
def solve2(plus,minus):
plus = zero + plus
minus = minus[::-1]
ans = 1
for i in range(len(plus)):
for j in range(len(minus)):
l1 = plus[i]
if i:
l2 = plus[i-1]
else:
l2 = 0
r1 = minus[j]
if j:
r2 = minus[j-1]
else:
r2 = 0
if l1*l2 <= r and r1*r2 <= r and l1*r1 >= l:
ans = max(ans,j+i+2)
return ans
def solve3(plus,minus):
ans = 1
for p in plus:
for m in minus:
if l <= p*m <= r:
ans = 2
return ans
if l >= 0:
ans = solve1(plus[:],minus[:])
elif r < 0:
ans = solve3(plus[:],minus[:])
else:
ans = max(solve1(plus[:],minus[:]),solve2(plus[:],minus[:]))
print(ans)