#include using namespace std; class city { public: const int latitude; const int longitude; const int points; const int height; int total_points; city(int lat, int lon, int p, int h): latitude (lat), longitude (lon), points (p), height (h) {}; }; multimap cities; multimap cities_by_points; int x; int y; int set_total_points (std::multimap::iterator pointer) { int best_points = 0; for (std::multimap::reverse_iterator iter = cities_by_points.rbegin(); iter != cities_by_points.rend(); ++iter) { if (abs(iter->second->latitude - pointer->second->latitude) > x) continue; if (abs(iter->second->longitude - pointer->second->longitude) > y) continue; if (iter->second->height == pointer->first) continue; if (iter->second->total_points <= best_points) continue; best_points = iter->second->total_points; break; } int result = best_points + pointer->second->points; pointer->second->total_points = result; cities_by_points.insert(make_pair(result, pointer->second)); return pointer->second->total_points; } int main(){ int n; cin >> n >> x >> y; for(int a0 = 0; a0 < n; a0++){ int latitude; int longitude; int height; int points; cin >> latitude >> longitude >> height >> points; cities.insert(make_pair(height, new city(latitude, longitude, points, height))); } int best_total; for (std::multimap::iterator iter = cities.begin(); iter != cities.end(); ++iter) { int current_total = set_total_points(iter); if (current_total > best_total) best_total = current_total; } cout << best_total; return 0; }