結果

問題 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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 45 ms
54,400 KB
testcase_01 AC 44 ms
54,784 KB
testcase_02 AC 43 ms
54,144 KB
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
testcase_27 WA -
testcase_28 WA -
testcase_29 WA -
testcase_30 WA -
testcase_31 WA -
testcase_32 WA -
権限があれば一括ダウンロードができます

ソースコード

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