Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using std::cerr;
  4. using std::endl;
  5.  
  6. inline int rd() {
  7. int a = 1, b = 0; char c = getchar();
  8. while (!isdigit(c)) a = c == '-' ? 0 : 1, c = getchar();
  9. while (isdigit(c)) b = b * 10 + c - '0', c = getchar();
  10. return a ? b : -b;
  11. }
  12.  
  13. const int N = 1e5 + 233;
  14.  
  15. int n; long long f[N];
  16. struct Node {
  17. long long x, y, c;
  18. } R[N];
  19.  
  20. inline bool comp(const Node &a, const Node &b) {
  21. return a.x + a.y < b.x + b.y;
  22. }
  23.  
  24. inline long long cross(long long x, long long y) {
  25. return (x - y) * (x - y);
  26. }
  27.  
  28. inline int find_pos(int x) {
  29. int l = 1, r = n, ret = 0;
  30. while (l <= r) {
  31. int mid = (l + r) >> 1;
  32. if (R[mid].x + R[mid].y <= x)
  33. ret = mid, l = mid + 1;
  34. else r = mid - 1;
  35. }
  36. return ret;
  37. }
  38.  
  39. inline void solve() {
  40. n = rd();
  41. for (int i = 1; i <= n; ++i)
  42. R[i].x = rd(), R[i].y = rd(), R[i].c = rd();
  43. std::sort(R + 1, R + n + 1, comp);
  44.  
  45. for (int i = 1; i <= n; ++i) {
  46. long long tmp = 4 * R[i].y * R[i].y - 4 * R[i].c * R[i].y;
  47. int st = find_pos(R[i].x - R[i].y);
  48. f[i] = f[st] + tmp;
  49. for (int j = std::max(1, i - 300); j < i; ++j)
  50. f[i] = std::max(f[i], f[j] + tmp - cross(R[j].x + R[j].y, R[i].x - R[i].y));
  51. f[i] = std::max(f[i], f[i - 1]);
  52. }
  53.  
  54. long long ans = 0, yu = 0;
  55. for (int i = 1; i <= n; ++i)
  56. ans = std::max(ans, f[i]);
  57.  
  58. long double out = ans;
  59. out = out / 4;
  60.  
  61. printf("%.2Lf\n", out);
  62. printf("%lld\n", ans / 4);
  63. }
  64.  
  65. int main() {
  66. // freopen("data", "r", stdin);
  67. // freopen("ex_radar.in", "r", stdin);
  68. int T = rd();
  69. while (T--)
  70. solve();
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement