#include <vector> #include <algorithm> using namespace std; class YetAnotherIncredibleMachine { public: int countWays(vector<int> platformMount, vector<int> platformLength, vector<int> balls) { balls.push_back(-100000); balls.push_back(100000); sort(balls.begin(), balls.end()); int ret = 1; for (int i = 0; i + 1 < balls.size(); ++i) { int st = balls[i], ed = balls[i + 1]; for (int j = 0; j < platformMount.size(); ++j) { if (platformMount[j] < st || platformMount[j] > ed) { continue; } int mst = max(st + 1, platformMount[j] - platformLength[j]); int med = min(ed - 1, platformMount[j] + platformLength[j]); int val = max(0, med - mst - platformLength[j] + 1); ret = (long long)ret * val % 1000000009; } } return ret; } };