結果
| 問題 |
No.3297 Bake Cookies
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-10-05 13:54:09 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 107 ms / 2,000 ms |
| コード長 | 1,757 bytes |
| コンパイル時間 | 2,767 ms |
| コンパイル使用メモリ | 288,628 KB |
| 実行使用メモリ | 12,084 KB |
| 最終ジャッジ日時 | 2025-10-05 13:54:36 |
| 合計ジャッジ時間 | 6,286 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 27 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using pll = pair<ll, ll>;
using vl = vector<ll>;
template <class T> using vec = vector<T>;
template <class T> using vv = vec<vec<T>>;
template <class T> using vvv = vv<vec<T>>;
template <class T> using minpq = priority_queue<T, vec<T>, greater<T>>;
#define rep(i, r) for(ll i = 0; i < (r); i++)
#define reps(i, l, r) for(ll i = (l); i < (r); i++)
#define rrep(i, l, r) for(ll i = (r) - 1; i >= (l); i--)
#define all(a) (a).begin(), (a).end()
#define sz(a) (ll)(a).size()
template<typename T>
bool chmax(T &a, const T& b) { return a < b ? a = b, true : false; }
template <typename T>
bool chmin(T &a, const T& b) { return a > b ? a = b, true : false; }
ll modmul(ll a, ll b, ll mod) {
ll ret = a * b - mod * ll(1.L / mod * a * b);
return ret + mod * (ret < 0) - mod * (ret >= mod);
}
ll modpow(ll a, ll b, ll mod) {
ll ans = 1;
for (; b; a = modmul(a, a, mod), b /= 2)
if (b & 1) ans = modmul(ans, a, mod);
return ans;
}
using ull = unsigned long long;
int solve() {
ll n, m, t;
cin >> n >> m >> t;
vl a(m);
rep(i, m) cin >> a[i];
vl remain(n, 0);
rep(i, m) remain[a[i]-1]++;
minpq<pll> q;
rep(i, n) {
if(remain[i] > 0){
q.emplace(1, i);
remain[i]--;
} else q.emplace(t, i);
}
rep(_, m) {
auto [tick, i] = q.top();
q.pop();
if(remain[i] > 0){
q.emplace(tick + 1, i);
remain[i]--;
} else q.emplace(tick + t, i);
// cerr << tick << " " << i << endl;
if(_ == m-1) cout << tick << endl;
}
return 0;
}
int main() {
ll T = 1;
cout << fixed << setprecision(16);
// cin >> T;
while (T--) solve();
}