結果
| 問題 |
No.1251 絶対に間違ってはいけない最小化問題
|
| コンテスト | |
| ユーザー |
uni_python
|
| 提出日時 | 2020-10-09 21:42:36 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 897 bytes |
| コンパイル時間 | 243 ms |
| コンパイル使用メモリ | 82,596 KB |
| 実行使用メモリ | 111,596 KB |
| 最終ジャッジ日時 | 2024-07-20 10:10:41 |
| 合計ジャッジ時間 | 14,078 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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=5
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