ohwhatalovelyday

Untitled

Feb 25th, 2021
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define FASTER() ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  4. #define ff first
  5. #define ss second
  6. #define pb push_back
  7. #define all(a) a.begin(), a.end()
  8. #define dbg(x) cerr<<" "<<#x<<" "<<x<<endl
  9.  
  10. typedef long long ll;
  11.  
  12. using namespace std;
  13.  
  14. int n, m;
  15. vector <int> deg;
  16.  
  17. void fileIO() {
  18.     freopen("gotham.in", "r", stdin);
  19.     freopen("gotham.out", "w", stdout);
  20. }
  21.  
  22. int check(int k) {
  23.     int cur = 0;
  24.     for(int i = 0; i < n; i++) {
  25.         if(deg[i] >= k - 1) {
  26.             cur++;
  27.         }
  28.     }
  29.     return cur;
  30. }
  31.  
  32. int main() {
  33.     FASTER();
  34.     fileIO();
  35.     cin >> n >> m;
  36.     ll sum = 0;
  37.     deg.resize(n);
  38.     for(int i = 0; i < n; i++) {
  39.         cin >> deg[i];
  40.         sum += deg[i];
  41.     }
  42.     if(m > 0 && n == 1) {
  43.         cout << -1;
  44.         return 0;
  45.     }
  46.     if(sum / 2 < m) {
  47.         cout << -1;
  48.         return 0;
  49.     }
  50.     int l = 1, r = n + 1;
  51.     while(r - l > 1) {
  52.         int mid = (r + l) >> 1;
  53.         if(sum < mid) {
  54.             r = mid;
  55.             continue;
  56.         }
  57.         int cur = check(mid);
  58.         dbg(mid);
  59.         dbg(cur);
  60.         if((cur - 1) * cur / 2 <= m && cur >= mid) { //satisfies
  61.             l = mid;
  62.         } else {
  63.             r = mid;
  64.         }
  65.     }
  66.     cout << l;
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment