結果

問題 No.3297 Bake Cookies
コンテスト
ユーザー Notch Apple
提出日時 2026-01-06 20:12:45
言語 C++17
(gcc 15.2.0 + boost 1.89.0)
結果
AC  
実行時間 414 ms / 2,000 ms
コード長 1,402 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,989 ms
コンパイル使用メモリ 219,284 KB
実行使用メモリ 16,000 KB
最終ジャッジ日時 2026-01-06 20:13:07
合計ジャッジ時間 12,462 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 27
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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

#define el '\n'
#define fi first
#define se second
#define pub push_back
#define pob pop_back
#define pii pair<int, int>
#define float long double
#define int long long

const int mxn = 2e5 + 5;
const int inf = 1e17;

int n, m, k;
map<int, int> a;

bool check(int mid) {
    int tobep2 = 0;
    int freefor = 0;

    for (auto p: a) {
        if (p.se > mid) tobep2 += p.se - mid;
        if (p.se < mid) {
            freefor += (freefor > m ? 0 : (mid - p.se) / k);
        }
    }

    return tobep2 <= freefor;
}

void solve() {
    cin >> n >> m >> k;

    for (int i = 1; i <= n; i++) a[i] = 0;

    for (int i = 1, t; i <= m; i++) {
        cin >> t; a[t]++;
    }

    int lo = 1, hi = inf;
    int ans = -1;

    while (lo <= hi) {
        int mid = lo + (hi - lo) / 2;

//        cout << lo << ' ' << hi << el;

        if (check(mid)) {
            ans = mid;
            hi = mid - 1;
        } else {
            lo = mid + 1;
        }
    }

    cout << ans;

//    for (int i = 1; i <= 10; i++) {
//        cout << i << ' ';
//        check(i);
//    }
}

signed main() {
    cin.tie(0) -> sync_with_stdio(0);

    #define fname "cake"
    if (fopen(fname".inp", "r")) {
        freopen(fname".inp", "r", stdin);
        freopen(fname".out", "w", stdout);
    }

    int t = 1;
//    cin >> t;

    for (int i = 1; i <= t; i++) solve();
}
0