Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ll n;
- ll k;
- ll a[MAXN];
- int check(ll x)
- {
- ll cr = 0;
- forn(i, n)
- {
- ll cur = 0;
- if (x == 1)
- cur = a[i];
- else
- {
- ll q = a[i];
- ll st = 0;
- while (q >= x)
- q /= 2, ++st;
- --st;
- cur = (1ll << st);
- }
- cr += cur;
- if (cr >= k)
- return 1;
- }
- return 0;
- }
- int solve()
- {
- ll sum = 0;
- scanf("%lld %lld", &n, &k);
- forn(i, n)
- scanf("%lld", &a[i]), sum += a[i];
- if (sum < k)
- puts("-1"), exit(0);
- ll l = 1, r = (ll)1e7 + 1;
- while (r - l > 1)
- {
- ll mid = l + r >> 1ll;
- if (check(mid))
- l = mid;
- else
- r = mid;
- }
- cout << l;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement