Untitled
unknown
plain_text
a year ago
1.1 kB
10
Indexable
#include <bits/stdc++.h> using namespace std; typedef long long int ll; #define endl "\n" const double PI = 3.14159265358979; const ll INF = 1e18 + 7; const ll MOD = 1e9 + 7; const ll nax = 1000005; const int LOG = 25; bool isPossibleToSeat(int dist, int k, vector<int> &a) { int cnt = 1, prev = a[0], n = a.size(); for (int i = 1; i < n; i++) { if (a[i] - prev >= dist) { prev = a[i]; cnt++; } } return cnt >= k; } void solve() { int n , k; cin >> n >> k; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a.begin(), a.end()); ll ans = 1, left = 1, right = a[n - 1] - a[0]; while(left <= right) { ll mid = (left + right) / 2; if (isPossibleToSeat(mid, k, a)) { ans = mid; left = mid + 1; } else { right = mid - 1; } } cout << ans << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t; cin >> t; while(t--) solve(); return 0; }
Editor is loading...
Leave a Comment