Advertisement
DPELED

2012b_88que1

Feb 26th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.62 KB | None | 0 0
  1. /*--------------------PART A-----------------------*/
  2.     public static Rectangle smallestRect1(Point[] p)
  3.     {
  4.         Point sw = p[0];//south-west vertex
  5.         int biggestX = p[0].getX();
  6.         int biggestY = p[0].getY();
  7.         for(int i = 1; i < p.length; i++){
  8.             if(p[i].getX() < sw.getX() || p[i].getY() < sw.getY())
  9.                 sw = p[i];
  10.             if(p[i].getX() > biggestX)
  11.                 biggestX = p[i].getX();
  12.             if(p[i].getY() > biggestY)
  13.                 biggestY = p[i].getY();
  14.         }
  15.         Rectangle res = new Rectangle(biggestX - sw.getX(), biggestY - sw.getY(), sw);
  16.         return res;
  17.     }
  18. /*--------------------PART B-----------------------*/
  19.     public static Rectangle smallestRect2(Point[] p)
  20.     {
  21.         if(p.length == 1)
  22.             return new Rectangle(0, 0, p[0]);
  23.         int width = p[p.length - 1].getY() - p[0].getY();
  24.         int high = p.length - 1, low = 0;
  25.         int mid = 0;
  26.         boolean found = false;
  27.         while(low <= high && !found){
  28.             mid = (high + low) / 2;
  29.             if(p[mid].getY() == p[p.length - 1].getY()){
  30.                 if(p[mid - 1].getY() == p[0].getY())
  31.                 found = true;
  32.                 else
  33.                 high = mid - 1;
  34.             }
  35.             else
  36.                 low = mid + 1;
  37.         }
  38.         int smallestX = Math.min(p[0].getX(), p[mid].getX());
  39.         int biggestX = Math.max(p[p.length - 1].getX(), p[mid - 1].getX());
  40.         Point sw = new Point(smallestX, p[0].getY());
  41.         return new Rectangle(biggestX - smallestX, width, new Point(smallestX, p[0].getY()));
  42.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement