fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long double pi=3.14159265358979323846264338327950;
  4. int n,f;
  5. long double arr[10100];
  6.  
  7. int solve(long double mid)
  8. {
  9. int k=f;
  10. for(int i=0;i<n;i++)
  11. { long double s=arr[i];
  12. if(s>=mid)
  13. {
  14. int u=s/mid;
  15. k-=u;
  16. if(k<1)
  17. return 1;
  18. }
  19. }
  20. return 0;
  21. }
  22. int main()
  23. {
  24. int t;
  25. scanf("%d",&t);
  26. while(t--)
  27. {
  28. scanf("%d %d",&n,&f);
  29. f++;
  30. int a[10100];
  31. for(int i=0;i<n;i++)
  32. {
  33. scanf("%d",a+i);
  34.  
  35. }
  36. //sort(a,a+n);
  37. for(int i=0;i<n;i++)
  38. arr[i]=pi*a[i]*a[i];
  39.  
  40.  
  41.  
  42. long double low=0,high=1000000001000,mid;
  43. while(low<high)
  44. {
  45. mid=(low+high+.000000001)/2;
  46. int g=solve(mid);
  47. if(g==0)
  48. high=mid-.000000001;
  49. else
  50. low=mid;
  51. }
  52.  
  53. printf("%.4Lf\n",low);
  54. }
  55. return 0;
  56. }
Success #stdin #stdout 0s 3588KB
stdin
10
1 2
1
1 2
4
2 2
1 1

2 31
91 66
52 97
63 8 70 9 26 12 35 79 56 29 64 79 81 91 87 95 30 9 22 85 79 3 100 96 64 85 66 78 10 33 63 42 83 22 69 62 52 90 40 59 94 87 79 72 48 97 40 32 87 23 16 53
47 68
81 40 62 94 81 68 47 21 62 17 79 100 64 87 56 2 62 49 56 96 99 5 85 57 85 74 34 98 92 2 86 45 84 19 51 20 94 25 39 3 34 27 51 43 60 7 89
12 21
44 29 62 27 57 30 34 49 83 42 93 98
19 9
52 3 65 3 62 2 78 60 41 96 77 15 21 44 25 75 26 11 11
96 71
53 93 52 33 82 78 35 46 72 84 58 3 30 82 4 88 43 74 39 48 85 22 66 91 92 52 94 34 96 96 65 34 2 10 44 36 85 9 67 99 85 36 74 17 26 73 52 27 18 9 80 65 5 46 56 20 35 72 13 53 34 76 81 91 74 22 27 33 13 91 58 79 53 67 71 42 30 30 80 94 69 40 17 17 27 47 6 26 57 50 5 39 67 4 51 2
23 54
88 8 32 21 35 4 23 45 41 57 48 100 97 89 27 13 54 90 34 2 45 77 11
stdout
1.0472
16.7552
1.5708
1238.8347
5541.7694
6870.6631
5028.6426
9556.7249
8824.7338
3402.3448