結果
問題 |
No.3297 Bake Cookies
|
ユーザー |
|
提出日時 | 2025-10-05 13:57:27 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 400 ms / 2,000 ms |
コード長 | 1,460 bytes |
コンパイル時間 | 6,531 ms |
コンパイル使用メモリ | 356,928 KB |
実行使用メモリ | 9,908 KB |
最終ジャッジ日時 | 2025-10-05 13:57:45 |
合計ジャッジ時間 | 16,219 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 27 |
ソースコード
#pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include <bits/stdc++.h> #include <atcoder/all> using namespace std; typedef long long ll; const int INF = 1<<30; const ll INFLL = 1LL<<60; //const ll MOD = 998244353; const double INFD = 1.0E10; const int dx[4] = {1, 0, -1, 0}; const int dy[4] = {0, -1, 0, 1}; //const int dx[8] = {1, 1, 0, -1, -1, -1, 0, 1}; //const int dy[8] = {0, 1, 1, 1, 0, -1, -1, -1}; using Pair = pair<ll, ll>; using Graph = vector<vector<ll>>; using mint = atcoder::modint998244353; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(15); ll n, m, t; cin >> n >> m >> t; vector<ll> a(m); for (int i = 0; i < m; i++){ cin >> a[i]; a[i]--; } ll ng = 0, ok = INFLL; while (ok - ng > 1){ ll mid = (ok + ng) / 2; vector<ll> cnt(n); ll rem = 0; for (int i = 0; i < m; i++){ if (cnt[a[i]] >= mid) rem++; else cnt[a[i]]++; } priority_queue<ll, vector<ll>, greater<ll>> pq; for (int i = 0; i < n; i++) pq.push(cnt[i]); while (!pq.empty() && rem > 0){ ll v = pq.top(); pq.pop(); if (v + t <= mid){ pq.push(v + t); rem--; } } if (rem == 0) ok = mid; else ng = mid; } cout << ok << endl; return 0; }