Aggressive cow
- #include<iostream>
- #include <vector>
- #include<string>
- #include<queue>
- #include<algorithm>
- #include <unordered_map>
- using namespace std;
- typedef long long int ll;
- bool possible(vector<int> v, ll mid, ll k) {
- int last;
- int cnt =0;
- last = v[0];
- cnt++;
- for (int i = 1; i < v.size(); i++) {
- if (v[i] - last >= mid) {
- cnt++;
- last = v[i];
- if (cnt == k) return true;
- }
- }
- if (cnt >= k) return true;
- else return false;
- }
- int main() {
- int t;
- cin >> t;
- while (t--) {
- int n, k;
- cin >> n >> k;
- vector<int> v(n,0);
- for (int i = 0; i < n; i++) cin >> v[i];
- sort(v.begin(), v.end());
- long long int result;
- ll L = 0;
- ll U = v[n - 1] - v[0];
- while (L <= U) {
- ll mid =( L + U) / 2;
- if (possible(v,k,mid)== true) {
- result = mid;
- L = mid + 1;
- }
- else {
- U = mid-1;
- }
- }
- cout << result << endl;
- }
- return 0;
- }
Comments
Post a Comment