Advertisement
Guest User

Yandex.Contest.2015-r1.B.AC

a guest
May 24th, 2015
627
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. // Author: Georgy Chebanov
  2. // AC -> {GNU c++ 11 4.9, 0.794s, 380.00Kb}
  3.  
  4. #include <bits/stdc++.h>
  5.  
  6. #define forn(i, n) for(int i = 0; i < (int)(n); ++i)
  7.  
  8. using namespace std;
  9.  
  10. const int N = 1000;
  11.  
  12. struct pt { int x, y; };
  13.  
  14. pt p[N];
  15. int w[N];
  16.  
  17. int main() {
  18.   int n;
  19.   int a, b, c, s_up, s_down, cc;
  20.   int ans, s_all;
  21.  
  22.   s_all = 0;
  23.   cin >> n;
  24.   forn(i, n) cin >> p[i].x >> p[i].y >> w[i];
  25.   forn(i, n) s_all += w[i];
  26.  
  27.   ans = (n == 1 ? w[0] : 1e9);
  28.  
  29.   forn(i, n) forn(j, i) {
  30.     a = p[i].y - p[j].y;
  31.     b = p[j].x - p[i].x;
  32.     c = a * p[i].x + b * p[i].y;
  33.  
  34.     s_up = 0;
  35.  
  36.     swap(p[i], p[n-1]);
  37.     swap(w[i], w[n-1]);
  38.  
  39.     swap(p[j], p[n-2]);
  40.     swap(w[j], w[n-2]);
  41.  
  42.     forn(k, n - 2) {
  43.       cc = (a * 1ll * p[k].x + b * 1ll * p[k].y - c) >> 31;
  44.       s_up += w[k] & cc;
  45.     }
  46.  
  47.     swap(p[j], p[n-2]);
  48.     swap(w[j], w[n-2]);
  49.  
  50.     swap(p[i], p[n-1]);
  51.     swap(w[i], w[n-1]);
  52.  
  53.     s_down = s_all - w[i] - w[j] - s_up;
  54.  
  55.     ans = min(ans, abs( (s_up + w[i] + w[j]) - (s_down) ));
  56.     ans = min(ans, abs( (s_down + w[i] + w[j]) - (s_up) ));
  57.  
  58.     ans = min(ans, abs( (s_up + w[i]) - (s_down + w[j]) ));
  59.     ans = min(ans, abs( (s_down + w[i]) - (s_up + w[j]) ));
  60.   }
  61.   cout << ans << '\n';
  62.   return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement