#include #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 D = inf.readInts(n, 1, 1'000'000'000); inf.readEoln(); std::sort(D.begin(), D.end()); std::vector 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()); std::vector 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(); }