結果

問題 No.3049 Contest Coordinator
ユーザー t98slider
提出日時 2025-03-07 21:27:55
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 226 ms / 2,000 ms
コード長 789 bytes
コンパイル時間 4,586 ms
コンパイル使用メモリ 261,896 KB
実行使用メモリ 39,108 KB
最終ジャッジ日時 2025-03-07 21:28:10
合計ジャッジ時間 13,075 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 58
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using ll = long long;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    ll n, t, x, y;
    cin >> n >> t >> x >> y;
    vector<ll> a(n);
    for(auto &&v : a) cin >> v;
    sort(a.begin(), a.end());
    atcoder::dsu uf(n);
    for(int i = 0; i + 1 < n; i++){
        if(a[i + 1] <= a[i] + t) uf.merge(i, i + 1);
    }
    auto G = uf.groups();
    vector<int> cnt;
    for(auto &&vec : G) cnt.emplace_back(vec.size());
    sort(cnt.rbegin(), cnt.rend());
    vector<int> ans(n);
    int sv = 0;
    for(auto &&v : cnt){
        sv += v;
        if(sv != n) ans[sv]++;
    }
    int mx = 0;
    for(int i = 0; i < n; i++){
        mx += ans[i];
        cout << min(x, y) * mx << " \n"[i == n - 1];
    }
}
0