Guest User

Untitled

a guest
Jan 21st, 2017
125
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4. #include <algorithm>
  5. #include <unordered_set>
  6. #include <cmath>
  7. #include <set>
  8. #include <unordered_map>
  9. #include <map>
  10. #include <functional>
  11. #include <iomanip>
  12. #include <vector>
  13. #include <utility>
  14.  
  15. using namespace std;
  16.  
  17. typedef long long ll;
  18.  
  19. const bool debug = true;
  20. int solve() {
  21.     int maxP = 0;
  22.     vector<pair<ll, ll>> pts;
  23.     int n;
  24.     ll r;
  25.     cin >> n >> r;
  26.     int i, j, k, p, q;
  27.     int x, y;
  28.     for(i = 0; i < n; i++) {
  29.         cin >> x >> y;
  30.         pts.push_back({x, y});
  31.     }
  32.     for(i = 0; i < n; i++) {
  33.         for(j = 0; j < n; j++) {
  34.             for(p = 0; p < 4; p++) {
  35.                 for(q = 0; q < 4; q++) {
  36.                     set<pair<ll, ll>> st;
  37.                     for(k = 0; k < n; k++) {
  38.                         if(p == 0) {
  39.                             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) {
  40.                                 st.insert(pts[k]);
  41.                             }
  42.                         }
  43.                         else if(p == 1) {
  44.                             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) {
  45.                                 st.insert(pts[k]);
  46.                             }
  47.                         }
  48.                         else if(p == 2) {
  49.                             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) {
  50.                                 st.insert(pts[k]);
  51.                             }
  52.                         }
  53.                         else {
  54.                              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) {
  55.                                 st.insert(pts[k]);
  56.                             }
  57.                         }
  58.                         if(q == 0) {
  59.                             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) {
  60.                                 st.insert(pts[k]);
  61.                             }
  62.                         }
  63.                         else if(q == 1) {
  64.                             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) {
  65.                                 st.insert(pts[k]);
  66.                             }
  67.                         }
  68.                         else if(q == 2) {
  69.                             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) {
  70.                                 st.insert(pts[k]);
  71.                             }
  72.                         }
  73.                         else {
  74.                              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) {
  75.                                 st.insert(pts[k]);
  76.                             }
  77.                         }
  78.                     }
  79.                     maxP = max(maxP, (int)st.size());
  80.                 }
  81.             }
  82.         }
  83.     }
  84.     return maxP;
  85.  
  86. }
  87.  
  88. int main() {
  89.    ios_base::sync_with_stdio(false);
  90.    if(!debug) {
  91.         freopen("q2.in", "r", stdin);
  92.         freopen("q2.out", "w", stdout);
  93.     }
  94.  
  95.     int t;
  96.     cin >> t;
  97.     int i;
  98.     for(i = 1; i <= t; i++) {
  99.         cerr << "Case " << i << '\n';
  100.         cout << "Case #" << i << ": " << solve() << "\n";
  101.     }
  102.  
  103. }
RAW Paste Data Copied