結果

問題 No.1251 絶対に間違ってはいけない最小化問題
ユーザー mencotton
提出日時 2020-11-02 15:15:24
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 698 bytes
コンパイル時間 723 ms
コンパイル使用メモリ 79,372 KB
実行使用メモリ 9,900 KB
最終ジャッジ日時 2024-07-22 06:16:03
合計ジャッジ時間 17,949 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 3
other WA * 42
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>

using namespace std;
using ld = long double;

int n;
vector<ld> a, b;

ld func(ld x) {
    ld ret = 0;
    for (int i = 0; i < n; i++) ret += b[i] * abs(x - a[i]);
    return ret;
}

int main() {
    cin >> n;
    a.resize(n), b.resize(n);
    for (int i = 0; i < n; i++)cin >> a[i];
    for (int i = 0; i < n; i++)cin >> b[i];

    ld mi = -1e7, ma = 1e7;
    while (ma - mi > 1e-10) {
        ld x = (ma + mi * 2) / 3, y = (ma * 2 + mi) / 3;
        if (func(x) > func(y))mi = x;
        else ma = y;
    }

    cout << fixed << setprecision(15) << (ma + mi) / 2 << " " << func((ma + mi) / 2) << endl;
    return 0;
}
0