#include using namespace std; struct City { int lat; int lon; int height; int points; friend bool operator<(const City &l, const City &r) { return l.height > r.height; } }; long solution(const vector &cities, int x, int y) { vector table(cities.size()); vector good(cities.size()); for (int i = 0; i < cities.size(); i++) { table[i] = cities[i].points; good[i] = cities[i].points > 0; } for (int i = 1; i < cities.size(); i++) { for (int j = 1; j <= i; j++) { if (abs(cities[i].lat - cities[i - j].lat) <= x && abs(cities[i].lon - cities[i - j].lon) <= y) { //cout << "+" << endl; table[i] = max(table[i], table[i] + table[i - j]); if (good[i - j]) { break; } } } /* for (int j = 0; j < table.size(); j++) { cout << table[j] << " "; } cout << endl;*/ } return *max_element(table.begin(), table.end()); } int main(){ int n; int x; int y; cin >> n >> x >> y; vector cities(n); for(int a0 = 0; a0 < n; a0++){ int latitude; int longitude; int height; int points; cin >> latitude >> longitude >> height >> points; // your code goes here cities[a0] = {latitude, longitude, height, points}; } sort(cities.begin(), cities.end()); cout << solution(cities, x, y) << endl; return 0; }