結果

問題 No.2404 Vertical Throw Up
ユーザー とりゐ
提出日時 2023-08-04 22:47:08
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,211 bytes
コンパイル時間 301 ms
コンパイル使用メモリ 82,152 KB
実行使用メモリ 78,596 KB
最終ジャッジ日時 2024-10-14 20:52:55
合計ジャッジ時間 4,151 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other WA * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

from sys import stdin
input=lambda :stdin.readline()[:-1]

from heapq import heappop, heappush
hq=[]

def calc(L,R,t):
  #print(L,R,t,-a*(L-t)*(R-t))
  return -a*(L-t)*(R-t)

from collections import deque

class ConvexHullTrick():
  # 追加する直線の傾きが単調
  # 計算する x 座標が単調
  # O(N+Q)
  
  def __init__(self):
    self.deq=deque()
  
  def check(self,f1,f2,f3):
    return (f2[0]-f1[0])*(f3[1]-f2[1])>=(f2[1]-f1[1])*(f3[0]-f2[0])
  
  def f(self,f1,x):
    return f1[0]*x+f1[1]
  
  # add f_i(x)=a*x+b
  def add_line(self,a,b):
    f1=(a,b)
    while len(self.deq)>=2 and self.check(self.deq[-2],self.deq[-1],f1):
      self.deq.pop()
    self.deq.append(f1)
  
  # min f_i(x)
  def query(self,x):
    while len(self.deq)>=2 and self.f(self.deq[0],x)>=self.f(self.deq[1],x):
      self.deq.popleft()
    return self.f(self.deq[0],x)


a=int(input())
q=int(input())
CHT=ConvexHullTrick()
for _ in range(q):
  query=list(map(int,input().split()))
  if query[0]==1:
    s,t=query[1:]
    CHT.add_line(-a*(s+t),a*s*t)
  else:
    t=query[1]
    ans=0
    if len(CHT.deq)>0:
      #print(CHT.deq)
      #print(CHT.query(t),t*t*a)
      ans=max(ans,-CHT.query(t)-t*t*a)
    print(ans)
0