結果
問題 |
No.3049 Contest Coordinator
|
ユーザー |
|
提出日時 | 2025-02-03 22:10:22 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 283 ms / 2,000 ms |
コード長 | 1,249 bytes |
コンパイル時間 | 10,341 ms |
コンパイル使用メモリ | 358,484 KB |
実行使用メモリ | 38,288 KB |
最終ジャッジ日時 | 2025-02-03 22:45:21 |
合計ジャッジ時間 | 20,110 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 58 |
ソースコード
#include <bits/stdc++.h> #include "testlib.h" void solve() { int n = inf.readInt(1, 500000); inf.readSpace(); int t = inf.readInt(0, 1'000'000'000); inf.readSpace(); int x = inf.readInt(1, 1'000'000'000); inf.readSpace(); int y = inf.readInt(1, 1'000'000'000); inf.readEoln(); std::vector<int> D = inf.readInts(n, 1, 1'000'000'000); inf.readEoln(); std::sort(D.begin(), D.end()); std::vector<int> C(0); int row = 0; for (int i = 1; i < n; i++) { if (D[i] - D[i - 1] > t) { C.push_back(row + 1); row = 0; } else { row++; } } C.push_back(row + 1); std::sort(C.begin(), C.end(), std::greater<int>()); std::vector<int> ans(n, -1); if (x > y) x = y; int tot = 0; for (size_t i = 0; i < C.size(); i++) { tot += C[i]; ans[tot - 1] = i; } for (int i = n - 2; i >= 0; i--) { if (ans[i] == -1) ans[i] = ans[i + 1]; } for (size_t i = 0; i < n; i++) { std::cout << (long long)ans[i] * x << " \n"[i + 1 == n]; } } int main(int argc, char *argv[]) { std::cin.tie(0)->sync_with_stdio(0); registerValidation(argc, argv); solve(); inf.readEof(); }