fork(19) download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int n,f;
  6.  
  7. #define pi 3.14159265358979323846264338327950
  8.  
  9. int func(long double num,long double array[])
  10. {
  11. int fr=0;
  12. if (num==0)
  13. return 0;
  14. for (int i=0; i<n; i++)
  15. fr+=(int)(array[i]/num);
  16. if (fr>=f)
  17. return 1;
  18. else
  19. return 0;
  20. }
  21.  
  22. long double bs(long double array[])
  23. {
  24. long double ini=0,last=array[n-1],max=0.0;
  25. while (last - ini >= 1e-6)
  26. {
  27. long double mid=(ini+last)/2;
  28. if (func(mid,array)==1)
  29. {
  30. /*if (max<mid)
  31.   max=mid;*/
  32. ini=mid;
  33. }
  34. else
  35. last=mid;
  36. }
  37. return ini;
  38. }
  39. int main()
  40. {
  41. int t;
  42. scanf("%d",&t);
  43. while (t--)
  44. {
  45. scanf("%d %d",&n,&f);
  46. f++;
  47. int array1[n];
  48. for (int i=0; i<n; i++)
  49. scanf("%d",&array1[i]);
  50. long double array[n];
  51. sort(array1,array1+n);
  52. for (int i=0; i<n; i++)
  53. array[i]=array1[i]*array1[i]*pi;
  54. long double k=bs(array);
  55. printf("%.4Lf\n",k);
  56. }
  57. return 0;
  58. }
Success #stdin #stdout 0s 3468KB
stdin
3
3 3
4 3 3
1 24
5
10 5
1 4 2 3 4 5 6 5 4 2
stdout
25.1327
3.1416
50.2655