結果

問題 No.3049 Contest Coordinator
ユーザー Iroha_3856
提出日時 2025-03-07 21:18:14
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 404 ms / 2,000 ms
コード長 990 bytes
コンパイル時間 4,231 ms
コンパイル使用メモリ 293,264 KB
実行使用メモリ 37,708 KB
最終ジャッジ日時 2025-03-07 21:18:30
合計ジャッジ時間 14,961 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 58
権限があれば一括ダウンロードができます

ソースコード

diff #

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

#define rep(i, l, r) for (int i = (int)(l); i<(int)(r); i++)
#define ll long long

ll INF = 4e18;

int main() {
    int N, T; ll X, Y; cin >> N >> T >> X >> Y;
    vector<int> A(N+1);
    rep(i, 0, N) cin >> A[i];
    A[N] = 2e9;
    sort(A.begin(), A.end());
    vector<vector<int>> R;
    vector<int> now = {A[0]};
    rep(i, 1, N+1) {
        if (A[i]-now.back() > T) {
            R.push_back(now);
            now = {A[i]};
        }
        else {
            now.push_back(A[i]);
        }
    }
    vector<int> L;
    for (auto r : R) L.push_back((int)r.size());
    sort(L.rbegin(), L.rend());
    vector<int> S((int)L.size()+1);
    S[0] = 0;
    rep(i, 1, L.size()+1) {
        S[i] = S[i-1] + L[i-1];
    }
    //S[i] >= k となる最小のiを求める
    vector<int> ans(N+1);
    rep(i, 1, N+1) {
        int x = lower_bound(S.begin(), S.end(), i) - S.begin();
        cout << (x-1)*min(X, Y) << " ";
    }
    cout << endl;
}
0