/* -*- coding: utf-8 -*- * * 33.cc: No.33 アメーバがたくさん - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 100; /* typedef */ typedef long long ll; typedef vector vi; typedef queue qi; typedef pair pii; typedef pair pll; typedef vector vpll; typedef map mivpl; /* global variables */ ll xs[MAX_N]; mivpl rgs; /* subroutines */ /* main */ int main() { int n, d, t; cin >> n >> d >> t; for (int i = 0; i < n; i++) { ll xi; cin >> xi; ll x0 = xi - (ll)t * d; ll x1 = xi + (ll)t * d; int mod = (xi % d + d) % d; vpll &rgv = rgs[mod]; //printf("xi=%lld, mod=%d\n", xi, mod); rgv.push_back(pll(x0, x1 + d)); } ll cnt = 0; for (mivpl::iterator mit = rgs.begin(); mit != rgs.end(); mit++) { vpll &rgv = mit->second; sort(rgv.begin(), rgv.end()); pll r = rgv[0]; for (int i = 1; i < rgv.size(); i++) { if (r.second < rgv[i].first) { cnt += (r.second - r.first) / d; r = rgv[i]; } else r.second = rgv[i].second; } cnt += (r.second - r.first) / d; } printf("%lld\n", cnt); return 0; }