結果
問題 |
No.3221 Count Turns
|
ユーザー |
|
提出日時 | 2025-08-01 22:47:57 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 48 ms / 2,000 ms |
コード長 | 1,031 bytes |
コンパイル時間 | 3,459 ms |
コンパイル使用メモリ | 286,556 KB |
実行使用メモリ | 7,720 KB |
最終ジャッジ日時 | 2025-08-01 22:48:03 |
合計ジャッジ時間 | 6,331 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 36 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; using triple = tuple<ll, int, int>; int main() { cin.tie(nullptr); ios_base::sync_with_stdio(false); int n, h, t; cin >> n >> h >> t; vector<int> a(n); for (int &x : a) cin >> x; auto comp = [] (triple lhs, triple rhs) -> bool { auto [l1, l2, l3] = lhs; auto [r1, r2, r3] = rhs; if (l1 != r1) return l1 > r1; if (l2 != r2) return l2 < r2; return l3 > r2; }; vector<int> ans(n, 0), res(n); for (int i = 0; i < n; i++) { res[i] = (h + a[i] - 1) / a[i]; } priority_queue<triple, vector<triple>, decltype(comp)> que(comp); for (int i = 0; i < n; i++) { que.push({res[i], res[i] * a[i], i}); } for (int i = 0; i < t; i++) { auto [ct, val, idx] = que.top(); que.pop(); ans[idx]++; que.push({ct + res[idx], val, idx}); } for (int i = 0; i < n; i++) { cout << ans[i] << (i == n - 1 ? "\n" : " "); } return 0; }