#include #include #include using namespace std; using namespace atcoder; using ll = long long; int main() { ll n, a, b; scanf("%lld %lld %lld", &n, &a, &b); vector xs(n); for (auto &x : xs) { scanf("%lld", &x); } dsu uf(n); ll begin = 0, end = 0; for (ll i = 0; i < n; i++) { ll begin1 = begin; while (begin1 < n && xs[i] + a > xs[begin1]) { begin1++; } ll end1 = end; while (end1 < n && xs[i] + b >= xs[end1]) { end1++; } if (i == 0 || begin1 >= end) { for (ll j = begin1; j < end1; j++) { uf.merge(i, j); } } else { for (ll j = end - 1; j < end1; j++) { uf.merge(i, j); } } begin = begin1; end = end1; } for (ll i = 0; i < n; i++) { printf("%d\n", uf.size(i)); } }