fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MOD = 1e9 + 7;
  4. #define int long long
  5. signed main() {
  6. cin.tie(0);
  7. ios::sync_with_stdio(false);
  8. int n;
  9. long long k;
  10. cin >> n >> k;
  11. vector<long long> a(n);
  12. for(int i = 0; i < n; i++){
  13. cin >> a[i];
  14. }
  15. sort(a.begin(), a.end());
  16. long long l = 0, r = 1e18, mid;
  17. for(int i = 0; i < 100; i++){
  18. mid = (l + r) / 2;
  19. long long sum = 0;
  20. for(int j = 0; j < n; j++){
  21. if(a[j] >= mid) continue;
  22. sum += mid - a[j];
  23. }
  24. if(sum < k){
  25. l = mid + 1;
  26. }else{
  27. r = mid - 1;
  28. }
  29. }
  30. for(int i = 0; i < n; i++){
  31. if(a[i] > mid) continue;
  32. k -= (mid - a[i]);
  33.  
  34. a[i] = mid;
  35. }
  36. if(k > 0){
  37. for(int i = 0; i < n; i++){
  38. if(k <= 0) break;
  39. a[i]++;
  40. k--;
  41. }
  42. }
  43.  
  44. int ans = 1;
  45. for(int i = 0; i < n; i++){
  46. ans = (ans * a[i]) % MOD;
  47. }
  48. cout << ans;
  49. }
  50.  
Success #stdin #stdout 0s 5324KB
stdin
2 5
0 4
stdout
20