import numpy as np
import matplotlib.pyplot as plt
from decimal import Decimal
x_width = 10
y_width = 10
while True:
    try:
        a=int(input("a= "))
        b=int(input("b= "))
        c=int(input("c= "))
        s=int(input("s= "))
        t=int(input("t= "))
        break
    except ValueError:
        pass
        break
p=-1*b/(2*a)
q=-1*(b**2-4*a*c)/(4*a)
fig = plt.figure(figsize=(5,5))
ax = fig.add_subplot(111)
title1="y={}x**2{:+}x{:+} ({}<=x<={})"
ax.set_title(title1.format(a,b,c,s,t), fontsize = 16)
ax.set_xlim(-1*x_width+p,x_width+p)
ax.set_ylim(-1*y_width+q,y_width+q)
ax.arrow(0,-1*y_width+q,0,2*y_width-0.4,head_width=0.3,head_length=0.3,fc='k',ec='k')
ax.arrow(-1*x_width+p,0,2*x_width-0.4,0,head_width=0.3,head_length=0.3,fc='k',ec='k')
ax.text(-0.6,y_width-1.6+q,'y',fontsize=13)
ax.text(x_width-0.6+p,0.6,'x',fontsize=13)
ax.text(-0.6,0.2,'O',fontsize=13)
ax.grid(which="major",axis="x",color="blue",alpha=0.8,linestyle="--",linewidth=1)
ax.grid(which="major",axis="y",color="blue",alpha=0.8,linestyle="--",linewidth=1)
x = np.arange(s, t+0.01, 0.01)
y = a*x ** 2+b*x+c
solution = "max = {} (x = {}) , min = {} (x = {})"
print(solution.format(Decimal(str(max(y))),x[np.argmax(y)],str(Decimal(min(y))),x[np.argmin(y)]))
ax.plot(x, y, color = "green")
plt.show()