結果
| 問題 |
No.1251 絶対に間違ってはいけない最小化問題
|
| コンテスト | |
| ユーザー |
uni_python
|
| 提出日時 | 2020-10-09 21:44:03 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 901 bytes |
| コンパイル時間 | 338 ms |
| コンパイル使用メモリ | 81,920 KB |
| 実行使用メモリ | 112,280 KB |
| 最終ジャッジ日時 | 2024-07-20 10:17:02 |
| 合計ジャッジ時間 | 44,660 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 2 WA * 40 |
ソースコード
import sys
input=sys.stdin.readline
def I(): return int(input())
def MI(): return map(int, input().split())
def LI(): return list(map(int, input().split()))
def main():
import bisect
N=I()
A=LI()
B=LI()
A.sort()
S=[0]*(N+1)
for i in range(N):
S[i+1]=S[i]+B[i]
M=10**6
def calc(x,prev):
# prvの時から,num以下のものは0.5かけで増える,以上なら0.5かけでヘル
num=bisect.bisect_left(A,x)
aa=S[num]
bb=S[-1]-S[num]
return prev + aa*0.5 - bb*0.5
prev=0
for i in range(N):
prev+=B[i]*abs(-M-A[i])
ans=prev
xi=M
for i in range(-2*M+1,2*M+1):
x=i/2
temp=calc(x,prev)
# print(x,temp)
if temp<ans:
ans=temp
xi=x
prev=temp
print(xi,int(ans))
main()
uni_python