Advertisement
welleyth

A. InfoCup 2022

Feb 12th, 2022
893
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3. #include <ext/pb_ds/tree_policy.hpp>
  4.  
  5. #define int long long
  6. #define mp make_pair
  7. #define pb push_back
  8.  
  9. #pragma GCC optimize("Ofast")
  10. #pragma GCC optimize("unroll-loops")
  11.  
  12. using namespace std;
  13. using namespace __gnu_pbds;
  14.  
  15. const int N = (int)3e5 + 111;
  16. const int md = (int)1e9 + 7;
  17. const int INF = (int)1e18;
  18.  
  19. int a[N];
  20. int n,S;
  21.  
  22. bool ok(int len){
  23.     int sum = 0;
  24.     int cur = 0;
  25.     for(int i = 1; i <= len; i++){
  26.         cur += a[i]*(i-1) - sum;
  27.         sum += a[i];
  28.     }
  29.     if(cur <= S)
  30.         return true;
  31.     for(int i = len+1; i <= n; i++){
  32.         cur -= sum - a[i-len]*len;
  33.         sum -= a[i-len];
  34.         cur += a[i]*(len-1)-sum;
  35.         sum += a[i];
  36.         if(cur <= S)
  37.             return true;
  38.     }
  39.     return false;
  40. }
  41.  
  42. void solve(){
  43.     cin >> n >> S;
  44.     for(int i = 1; i <= n; i++){
  45.         cin >> a[i];
  46.     }
  47.     sort(a+1,a+n+1);
  48.     int l = 1, r = n+1;
  49.     while(r-l>1){
  50.         int m = (l+r)>>1;
  51.         if(ok(m))
  52.             l = m;
  53.         else
  54.             r = m;
  55.     }
  56.  
  57.     cout << l << "\n";
  58.  
  59.     return;
  60. }
  61.  
  62. signed main(){
  63.     ios::sync_with_stdio(false);cin.tie(nullptr);
  64.  
  65.     int tests = 1;
  66. //    cin >> tests;
  67.     for(int test = 1; test <= tests; test++){
  68.         solve();
  69.     }
  70.  
  71.     return 0;
  72. }
  73. /**
  74. k = 1
  75.  
  76.  
  77. **/
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement