• Source
    1. #include <iostream>
    2. #include <stdio.h>
    3. #include <vector>
    4. using namespace std;
    5.  
    6. struct data
    7. {
    8. float x;
    9. float y;
    10. float m;
    11. } typedef data;
    12.  
    13. vector <data> M; //<=> M[];
    14.  
    15. float BS_y (float front, float back)
    16. {
    17. float mid=(front+back)/2;
    18. float SUM=0.0;
    19. for (int i=0; i<M.size(); i++)
    20. {
    21. float x=M[i].x;
    22. float m=M[i].m;
    23. SUM+=(m*(mid-x));
    24. }
    25. long long tg = (long long)(SUM*100);
    26. if (tg==0) return mid;
    27. else if (tg>0) return BS_y (front, mid);
    28. else return BS_y (mid, back);
    29. }
    30.  
    31. float BS_x (float front, float back)
    32. {
    33. float mid=(front+back)/2;
    34. float SUM=0.0;
    35. for (int i=0; i<M.size(); i++)
    36. {
    37. float y=M[i].y;
    38. float m=M[i].m;
    39. SUM+=(m*(mid-y));
    40. }
    41. long long tg = (long long)(SUM*100);
    42. if (tg==0) return mid;
    43. else if (tg>0) return BS_x (front, mid);
    44. else return BS_x (mid, back);
    45. }
    46.  
    47. int main ()
    48. {
    49. int n;
    50. int t=0;
    51. while (1)
    52. {
    53. cin>>n;
    54. if (n<0) break;
    55. t++;
    56. data tg;
    57. float xMax=0, xMin=0;
    58. float yMax=0, yMin=0;
    59. for (int i=1; i<=n; i++)
    60. {
    61. cin>>tg.x>>tg.y>>tg.m;
    62. M.push_back(tg); //Them mang;
    63. if (i==1)
    64. {
    65. xMax=tg.x; xMin=tg.x;
    66. yMax=tg.y; yMin=tg.y;
    67. }
    68. else
    69. {
    70. if (tg.x > xMax) xMax=tg.x;
    71. if (tg.x < xMin) xMin=tg.x;
    72. if (tg.y > yMax) yMax=tg.y;
    73. if (tg.y < yMin) yMin=tg.y;
    74. }
    75. }
    76. printf ("Case %d: %.2f %.2f\n",t, BS_y (xMin, xMax), BS_x (yMin, yMax));
    77. M.clear(); //Xoa mang;
    78. }
    79. return 0;
    80. }