v 0. Pasted by slipstak2 as cpp at 2011-01-11 14:14:00 MSK and set expiration to never.

Paste will expire never.

  1. // Меньшиков. Тренировка 14.
  2. // 14E. Поле для крикета [cricket]
  3. // O(N*N) для перебора угла +
  4. // O(N)  нахождение длины
  5. // ibelyaev: 11Jan2011
  6.  
  7. #include <iostream>
  8. #include <cstdio>
  9. #include <vector>
  10. #include <set>
  11. #include <utility>
  12.  
  13. using namespace std;
  14. typedef vector<pair<int,int> > POINTS;
  15. #define mp make_pair
  16. #define X(i) mas[i].first
  17. #define Y(i) mas[i].second
  18. int n,W,H;
  19. POINTS mas;
  20.  
  21. void input()
  22. {
  23.     cin>>n>>W>>H;
  24.     int x,y;
  25.     for (int i=0;i<n;i++) {
  26.         cin>>x>>y;
  27.         mas.push_back(mp(x,y));
  28.     }
  29.     mas.push_back(mp(0,0));
  30.     n = mas.size();
  31. }
  32. void solve()
  33. {
  34.     int resX = 0, resY = 0, resSide = 1;
  35.     int curX, curY, curSide;
  36.     for (int i = 0; i<n; i++) {
  37.         for (int j = 0; j<n; j++) {
  38.             curX = X(i);
  39.             curY = Y(j);
  40.             curSide = min(W-curX, H-curY);
  41.             for (int k=0; k<n; k++) {
  42.                 if (X(k) > curX && Y(k) > curY) {
  43.                     if (max(X(k) - curX,Y(k) - curY) < curSide)
  44.                         curSide = max(X(k) - curX,Y(k) - curY);
  45.                 }
  46.             }
  47.             if (resSide < curSide) {
  48.                 resSide = curSide;
  49.                 resX = curX;
  50.                 resY = curY;
  51.             }
  52.         }
  53.  
  54.     }
  55.     cout<<resX<<' '<<resY<<' '<<resSide;
  56. }
  57. int main()
  58. {
  59.     freopen("input.txt","r",stdin);
  60.     freopen("output.txt","w",stdout);
  61.  
  62.     input();
  63.     solve();
  64.     return 0;
  65. }


Editing is locked.