結果

問題 No.91 赤、緑、青の石
コンテスト
ユーザー pillow
提出日時 2026-01-30 05:45:41
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
結果
AC  
実行時間 2 ms / 5,000 ms
コード長 775 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,685 ms
コンパイル使用メモリ 333,880 KB
実行使用メモリ 7,972 KB
最終ジャッジ日時 2026-01-30 05:45:47
合計ジャッジ時間 4,163 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 29
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
    ll R, G, B;
    cin >> R >> G >> B;

    auto ok = [&](ll k) -> bool {
        ll sr = max(0LL, R - k), sg = max(0LL, G - k), sb = max(0LL, B - k);
        ll dr = max(0LL, k - R), dg = max(0LL, k - G), db = max(0LL, k - B);

        ll cr = sr / 2, cg = sg / 2, cb = sb / 2;

        if (dr > cg + cb) return false;
        if (dg > cr + cb) return false;
        if (db > cr + cg) return false;
        if (dr + dg + db > cr + cg + cb) return false;
        return true;
    };

    ll lo = 0, hi = (R + G + B) / 3 + 1; // 最大でも総数/3
    while (lo + 1 < hi) {
        ll mid = (lo + hi) / 2;
        if (ok(mid)) lo = mid;
        else hi = mid;
    }
    cout << lo << "\n";
}
0