結果

問題 No.3221 Count Turns
ユーザー kenti
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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;
}
0