結果
| 問題 |
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 |
ソースコード
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)
とりゐ