結果
問題 |
No.1251 絶対に間違ってはいけない最小化問題
|
ユーザー |
|
提出日時 | 2021-02-21 17:45:58 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 307 ms / 2,000 ms |
コード長 | 557 bytes |
コンパイル時間 | 729 ms |
コンパイル使用メモリ | 81,940 KB |
実行使用メモリ | 215,600 KB |
最終ジャッジ日時 | 2024-09-19 15:39:15 |
合計ジャッジ時間 | 18,511 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 42 |
ソースコード
n=int(input()) a=list(map(int,input().split())) b=list(map(int,input().split())) da=list(set(a)) da.sort() da={x:i for i,x in enumerate(da)} dainv={x:i for i,x in da.items()} ary=[0]*(n+1) for ai,bi in zip(a,b): ai=da[ai] ary[0]-=bi ary[ai+1]+=2*bi i0=-1 for i in range(n): ary[i+1]+=ary[i] if ary[i+1]>0: i0=i break #print(da) #print(dainv) x0=dainv[i0] def func(x): ret=0 for ai,bi in zip(a,b): ret+=bi*abs(x-ai) return ret mnx,mnf=x0,10**18 for x in (x0,x0+1,x0-1): v=func(x) if mnf>v: mnx=x mnf=v print(mnx,mnf)