fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. int main() {
  6. ios_base::sync_with_stdio(false);
  7. cin.tie(0);
  8. int n;
  9. cin >> n;
  10. double s0, s;
  11. double A[n], B[n];
  12. cin >> s0 >> s;
  13. if(s0>=s)
  14. cout << 0;
  15. else
  16. {
  17. for(int i=0; i<n; i++)
  18. {
  19. cin >> A[i];
  20. B[i]=A[i];
  21. }
  22. sort(B, B+n);
  23. int ans=0;
  24. for(int i=n-1; i>=1; i--)
  25. {
  26. if(B[i]>=10.1)
  27. {
  28. if((int)(B[i]-5.1)+s0>=s){
  29. ans++;
  30. cout << ans;
  31. return 0;
  32. }
  33. else
  34. {
  35. ans++;
  36. B[i-1]+=(int)(B[i]-5.1);
  37. }
  38. }
  39. else
  40. {
  41. break;
  42. }
  43. }
  44. if((B[0]>=10.1)&&((int)(B[0]-5.1)+s0>=s))
  45. cout << ans+1;
  46. else
  47. {
  48. sort(A, A+n);
  49. if(s0>=10.1)
  50. {
  51. A[n-1]+=(int)(s0-5.1);
  52. s0-=(int)(s0-5.1);
  53. s0-=0.1;
  54. ans=1;
  55. for(int i=n-1; i>=1; i--)
  56. {
  57. if(A[i]>=10.1)
  58. {
  59. if((int)(A[i]-5.1)+s0>=s){
  60. ans++;
  61. cout << ans;
  62. return 0;
  63. }
  64. else
  65. {
  66. ans++;
  67. A[i-1]+=(int)(A[i]-5.1);
  68. }
  69. }
  70. else
  71. {
  72. break;
  73. }
  74. }
  75. if((A[0]>=10.1)&&((int)(A[0]-5.1)+s0>=s))
  76. cout << ans+1;
  77. else
  78. cout << -1;
  79. }
  80. else
  81. cout << -1;
  82. }
  83. }
  84. return 0;
  85. }
Success #stdin #stdout 0s 4492KB
stdin
2 142.10 143.00
6.05 7.00
stdout
2