結果

問題 No.2248 max(C)-min(C)
ユーザー RedstoneGamer22
提出日時 2023-04-10 22:11:16
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 468 ms / 3,000 ms
コード長 745 bytes
コンパイル時間 1,981 ms
コンパイル使用メモリ 206,420 KB
最終ジャッジ日時 2025-02-12 04:52:34
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 51
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n; cin >> n;
    vector<int> a(n); for(auto &e : a) cin >> e;
    vector<int> b(n); for(auto &e : b) cin >> e;

    multiset<int> s;
    vector<pair<int, int>> ev;

    for(int i = 0; i < n; i++) {
        int c = (a[i] + b[i]) / 2;
        if(a[i] > b[i]) swap(a[i], b[i]);

        s.insert(a[i]);
        ev.push_back({a[i], c});
        ev.push_back({c, b[i]});
    }

    #define get_dif (*(s.rbegin()) - *(s.begin()))

    int ans = get_dif;

    sort(ev.begin(), ev.end());
    for(auto e : ev) {
        s.erase(s.lower_bound(e.first));
        s.insert(e.second);

        ans = min(ans, get_dif);
    }

    #undef get_dif

    cout << ans << endl;

    return 0;
}
0