結果
問題 | No.2500 Products in a Range |
ユーザー |
![]() |
提出日時 | 2023-10-14 02:44:33 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,076 ms / 2,000 ms |
コード長 | 2,021 bytes |
コンパイル時間 | 171 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 77,020 KB |
最終ジャッジ日時 | 2024-09-15 22:22:31 |
合計ジャッジ時間 | 17,065 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge6 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 61 |
ソースコード
n,l,r=map(int,input().split())A=list(map(int,input().split()))ANS=1for i in range(n):for j in range(i+1,n):if l<=A[i]*A[j]<=r:ANS=2if r<0:print(ANS)exit()PLUS=[]MINUS=[]zero=0for a in A:if a>0:PLUS.append(a)elif a<0:MINUS.append(a)else:zero+=1PLUS.sort()MINUS.sort()def check(x,y,A):for i in range(x+1,x+3):if x<=i<=y:if x!=i:if l<=A[x]*A[i]<=r:passelse:return Falseif y!=i:if l<=A[y]*A[i]<=r:passelse:return Falsefor i in range(y-2,y):if x<=i<=y:if x!=i:if l<=A[x]*A[i]<=r:passelse:return Falseif y!=i:if l<=A[y]*A[i]<=r:passelse:return Falsereturn Trueif l>0:for i in range(len(PLUS)):for j in range(i,len(PLUS)):if check(i,j,PLUS)==True:ANS=max(ANS,j-i+1)for i in range(len(MINUS)):for j in range(i,len(MINUS)):if check(i,j,MINUS)==True:ANS=max(ANS,j-i+1)print(ANS)exit()MINUS.reverse()ANS=0for i in range(len(PLUS)+1):for j in range(len(MINUS)+1):x0=0if i-2>=0:x0=PLUS[i-2]x1=0if i-1>=0:x1=PLUS[i-1]y0=0if j-2>=0:y0=MINUS[j-2]y1=0if j-1>=0:y1=MINUS[j-1]LIST=[x0,x1,y0,y1]flag=1for k in range(4):for m in range(k+1,4):if l<=LIST[k]*LIST[m]<=r:passelse:flag=0if flag==1:ANS=max(ANS,i+j)print(ANS+zero)