結果

問題 No.2970 三次関数の絶対値
ユーザー miya145592
提出日時 2024-11-29 22:34:41
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 48 ms / 2,000 ms
コード長 12,323 bytes
コンパイル時間 419 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 54,656 KB
最終ジャッジ日時 2024-11-29 22:34:45
合計ジャッジ時間 3,977 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 50
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

def g(x):
return C[3]*x*x*x+C[2]*x*x+C[1]*x+C[0]
def f(x):
global a, b, c
return a*x*x+b*x+c
import sys
input = sys.stdin.readline
C = list(map(int, input().split()))
L, R = map(int, input().split())
if L==R:
print(g(L))
exit()
# ax^2+bx+c=0
c, b, a = C[1], C[2]*2, C[3]*3
D = b*b-4*a*c
if D<0:
#
# 調
v = f(L)
if v>=0:
#
l = g(L)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
elif D>0:
if a==0:
# 1
x = -c/b
if R<=x:
# L, R, x
# 調
v = f(L)
if v>=0:
#
l = g(L)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
elif x<=L:
# x, L, R
# 調
v = f(R)
if v>=0:
#
l = g(L)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
else:
# L, x, R
# L<x
v = f(L)
if v>=0:
#
l = g(L)
r = g(x)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(x)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
# x<R
v = f(R)
if v>=0:
#
l = g(x)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = min(ans, abs(l))
else:
ans = min(ans, abs(r))
else:
#
l = g(x)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = min(ans, abs(r))
else:
ans = min(ans, abs(l))
else:
#
x1 = (-b+D**0.5)/(2*a)
x2 = (-b-D**0.5)/(2*a)
if x1>x2:
x1, x2 = x2, x1
if L<=x1:
if R<=x1:
# L, R, x1, x2
# 調
v = f(L)
w = f(R)
if v>0 or w>0:
#
l = g(L)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
elif x2<R:
# L, x1, x2, R
# L<x1
v = f(L)
if v>=0:
#
l = g(L)
r = g(x1)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(x1)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
# x1<x2
mid = (x1+x2)/2
v = f(mid)
if v>=0:
#
l = g(x1)
r = g(x2)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = min(ans, abs(l))
else:
ans = min(ans, abs(r))
else:
#
l = g(x1)
r = g(x2)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = min(ans, abs(r))
else:
ans = min(ans, abs(l))
# x2<R
v = f(R)
if v>=0:
#
l = g(x2)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = min(ans, abs(l))
else:
ans = min(ans, abs(r))
else:
#
l = g(x2)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = min(ans, abs(r))
else:
ans = min(ans, abs(l))
else:
# L, x1, R, x2
# L<x1
v = f(L)
if v>=0:
#
l = g(L)
r = g(x1)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(x1)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
# x1<R
v = f(R)
if v>=0:
#
l = g(x1)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = min(ans, abs(l))
else:
ans = min(ans, abs(r))
else:
#
l = g(x1)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = min(ans, abs(r))
else:
ans = min(ans, abs(l))
elif x2<=L:
# x1, x2, L, R
# 調
v = f(L)
w = f(R)
if v>0 or w>0:
#
l = g(L)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
else:
if x2<R:
# x1, L, x2, R
# L<x2
v = f(L)
if v>=0:
#
l = g(L)
r = g(x2)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(x2)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
# x2<R
v = f(R)
if v>=0:
#
l = g(x2)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = min(ans, abs(l))
else:
ans = min(ans, abs(r))
else:
#
l = g(x2)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = min(ans, abs(r))
else:
ans = min(ans, abs(l))
else:
# x1, L, R, x2
# 調
v = f(L)
w = f(R)
if v>0 or w>0:
#
l = g(L)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
else:
# 1
# 調
v = f(L)
w = f(R)
if v>0 or w>0:
#
l = g(L)
r = g(R)
if l<=0 and 0<=r:
ans = 0
else:
if l>0:
ans = abs(l)
else:
ans = abs(r)
else:
#
l = g(L)
r = g(R)
if r<=0 and 0<=l:
ans = 0
else:
if l>0:
ans = abs(r)
else:
ans = abs(l)
print(ans)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0