Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using lli = long long;
- const lli INF = 1e10;
- const lli N = 1e3 + 10;
- lli ar[N];
- lli n, k;
- lli Area(lli l, lli r){
- lli base = r - l + 1;
- if(base <= 0) return 0;
- if(base % 2 != 0) return (base + 1) * (base + 1) / 4;
- return base * (base + 2) / 4;
- }
- bool check(lli x){
- lli sum = 0;
- for(int i=1;i<=n;i++){
- lli area = Area(ar[i] - x, ar[i] + x);
- lli overlap = i + 1 <= n ? Area(ar[i+1] - x, ar[i] + x): 0;
- sum += area - overlap;
- }
- return sum >= k;
- }
- int main(){
- scanf("%lld%lld", &n, &k);
- for(lli i=1;i<=n;i++)
- scanf("%lld", &ar[i]);
- sort(ar + 1, ar + n + 1);
- lli l = 0, r = INF, ans = INF;
- while(l <= r){
- lli mid = (l + r) / 2;
- bool ch = check(mid);
- if(ch) r = mid - 1, ans = min(ans, mid);
- else l = mid + 1;
- }
- printf("%lld", ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement