immuntasir

lightoj 1043

May 29th, 2015
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cmath>
  3. #include <cstdlib>
  4. int main() {
  5. //freopen("in.txt", "r", stdin);
  6. int T,cs=1;
  7. scanf("%d", &T);
  8. for (cs = 1; cs<=T; cs++) {
  9. double rat, ab, bc, ac,de,ae,ad, ratio, s, area,s2,area2,area3;
  10. scanf("%lf %lf %lf %lf", &ab, &ac, &bc, &ratio);
  11.  
  12. s = (ab+bc+ac)/2;
  13. area = sqrt(s*(s-ab)*(s-bc)*(s-ac));
  14. double low = 10e-7;
  15. double high = ab;
  16.  
  17. while (low<=high) {
  18. ad = low + (high-low)/2;
  19. //printf("%lf %lf %lf\n", low, high,ad);
  20. de = (ad/ab) * bc;
  21. ae = (ad/ab) * ac;
  22. s2 = (ad + de+ae)/2;
  23. area2 = sqrt(s2*(s2-ad)*(s2-de)*(s2-ae));
  24. area3 = area -area2;
  25.  
  26. if ((area3*ratio - area2) <= 10e-6) break;
  27. else if (area3*ratio < area2) {
  28. high = ad-10e-5;
  29. }
  30. else {
  31. low = ad + 10e-5;
  32. }
  33. }
  34. printf("%lf\n", ad);
  35. }
  36. return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment