Advertisement
Guest User

Untitled

a guest
May 24th, 2015
476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. struct Point {
  8.     int x, y, a;
  9.  
  10.     Point() {}
  11.    
  12.     Point(int _x, int _y): x(_x), y(_y), a(-1) {}
  13.  
  14.     Point operator-(const Point &p) const {
  15.         return Point(x - p.x, y - p.y);
  16.     }
  17. };
  18.  
  19. const int MAXN = 1005;
  20. Point p[MAXN], q[2 * MAXN];
  21.  
  22. int cp(const Point &a, const Point &b) {
  23.     return a.x * b.y - a.y * b.x;
  24. }
  25.  
  26. bool operator<(const Point &a, const Point &b) {
  27.     if(a.x < 0 || (a.x == 0 && a.y < 0)) {
  28.         if(b.x < 0 || (b.x == 0 && b.y < 0))
  29.             return cp(a, b) > 0;
  30.         return true;
  31.     }
  32.     if(b.x < 0 || (b.x == 0 && b.y < 0))
  33.         return false;
  34.     return cp(a, b) > 0;
  35. }
  36.  
  37. bool cmp(const Point &a, const Point &b) {
  38.     return a - q[0] < b - q[0];
  39. }
  40.  
  41. int main() {
  42.     ios_base::sync_with_stdio(false);
  43.     int n;
  44.     cin >> n;
  45.     int sum = 0;
  46.     for(int i = 0; i < n; i++) {
  47.         cin >> p[i].x >> p[i].y >> p[i].a;
  48.         sum += p[i].a;
  49.     }
  50.     int ans = sum;
  51.     for(int i = 0; i < n; i++) {
  52.         for(int j = 0; j < n; j++)
  53.             q[j] = p[j];
  54.         swap(q[i], q[0]);
  55.         sort(q + 1, q + n, cmp);
  56.         for(int j = 1; j < n; j++)
  57.             q[n - 1 + j] = q[j];
  58.         int cur = 0;
  59.         for(int j = 1, k = 1; j < n; j++) {
  60.             while(k < j + n - 1 && cp(q[j] - q[0], q[k] - q[0]) >= 0) {
  61.                 cur += q[k].a;
  62.                 k++;
  63.             }
  64.             ans = min(ans, int(abs(sum - 2 * cur)));
  65.             cur -= q[j].a;
  66.         }
  67.     }
  68.     cout << ans << '\n';
  69.     return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement