Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <string>
- #include <algorithm>
- #include <unordered_set>
- #include <cmath>
- #include <set>
- #include <unordered_map>
- #include <map>
- #include <functional>
- #include <iomanip>
- #include <vector>
- #include <utility>
- using namespace std;
- typedef long long ll;
- const bool debug = true;
- int solve() {
- int maxP = 0;
- vector<pair<ll, ll>> pts;
- int n;
- ll r;
- cin >> n >> r;
- int i, j, k, p, q;
- int x, y;
- for(i = 0; i < n; i++) {
- cin >> x >> y;
- pts.push_back({x, y});
- }
- for(i = 0; i < n; i++) {
- for(j = 0; j < n; j++) {
- for(p = 0; p < 4; p++) {
- for(q = 0; q < 4; q++) {
- set<pair<ll, ll>> st;
- for(k = 0; k < n; k++) {
- if(p == 0) {
- if(pts[k].first >= pts[i].first && pts[k].first - pts[i].first <= r && pts[k].second >= pts[i].second && pts[k].second - pts[i].second <= r) {
- st.insert(pts[k]);
- }
- }
- else if(p == 1) {
- if(pts[k].first <= pts[i].first && -pts[k].first + pts[i].first <= r && pts[k].second >= pts[i].second && pts[k].second - pts[i].second <= r) {
- st.insert(pts[k]);
- }
- }
- else if(p == 2) {
- if(pts[k].first <= pts[i].first && -pts[k].first + pts[i].first <= r && pts[k].second <= pts[i].second && -pts[k].second + pts[i].second <= r) {
- st.insert(pts[k]);
- }
- }
- else {
- if(pts[k].first >= pts[i].first && pts[k].first - pts[i].first <= r && pts[k].second <= pts[i].second && -pts[k].second + pts[i].second <= r) {
- st.insert(pts[k]);
- }
- }
- if(q == 0) {
- if(pts[k].first >= pts[j].first && pts[k].first - pts[j].first <= r && pts[k].second >= pts[j].second && pts[k].second - pts[j].second <= r) {
- st.insert(pts[k]);
- }
- }
- else if(q == 1) {
- if(pts[k].first <= pts[j].first && -pts[k].first + pts[j].first <= r && pts[k].second >= pts[j].second && pts[k].second - pts[j].second <= r) {
- st.insert(pts[k]);
- }
- }
- else if(q == 2) {
- if(pts[k].first <= pts[j].first && -pts[k].first + pts[j].first <= r && pts[k].second <= pts[j].second && -pts[k].second + pts[j].second <= r) {
- st.insert(pts[k]);
- }
- }
- else {
- if(pts[k].first >= pts[j].first && pts[k].first - pts[j].first <= r && pts[k].second <= pts[j].second && -pts[k].second + pts[j].second <= r) {
- st.insert(pts[k]);
- }
- }
- }
- maxP = max(maxP, (int)st.size());
- }
- }
- }
- }
- return maxP;
- }
- int main() {
- ios_base::sync_with_stdio(false);
- if(!debug) {
- freopen("q2.in", "r", stdin);
- freopen("q2.out", "w", stdout);
- }
- int t;
- cin >> t;
- int i;
- for(i = 1; i <= t; i++) {
- cerr << "Case " << i << '\n';
- cout << "Case #" << i << ": " << solve() << "\n";
- }
- }
Add Comment
Please, Sign In to add comment