fork(1) download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int n,f;
  6. //long double pi = acos(-1) ;
  7.  
  8. int x(long double num , long double arr[])
  9. {
  10. int fr=0;
  11.  
  12. if (num==0)
  13. return 0;
  14.  
  15. for (int i = 0 ; i < n ; i++)
  16. fr += (int) (arr[i] / num);
  17.  
  18. if (fr >=f)
  19. return 1;
  20.  
  21. else
  22. return 0;
  23. }
  24.  
  25. long double can(long double arr[]){
  26.  
  27. long double s = 0 , e = arr[n-1] , mx= 0.0 ;
  28.  
  29. while (e - s >= 1e-6){
  30.  
  31. long double mid = (s + e ) / 2;
  32. if ( x (mid , arr) == 1)
  33. {
  34. s = mid ;
  35. }
  36. else
  37. e = mid ;
  38. }
  39.  
  40. return s ;
  41. }
  42.  
  43.  
  44. int main()
  45. {
  46. int t;
  47.  
  48. scanf("%d",&t);
  49.  
  50. while (t--){
  51. scanf("%d %d",&n,&f);
  52. f++;
  53.  
  54. int arr1[n];
  55. for (int i = 0 ; i < n ; i++)
  56. scanf("%d" , &arr1[i]);
  57.  
  58. long double arr[n];
  59.  
  60. sort(arr1 , arr1 + n);
  61.  
  62. for (int i=0; i<n; i++)
  63.  
  64. arr[i] = arr1[i] * arr1[i] * acos(-1);
  65.  
  66. long double k = can(arr);
  67.  
  68. printf("%.4Lf\n",k);
  69. }
  70.  
  71. return 0;
  72. }
Success #stdin #stdout 0s 3420KB
stdin
3
3 3
4 3 3
1 24
stdout
25.1327
0.0000
0.0000