Guest User

Untitled

a guest
Dec 13th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <vector>
  4. #include <algorithm>
  5. using namespace std;
  6. int n, c;
  7. long long tmp;
  8. long long ans=0;
  9. vector<long long> v;
  10. void go(long long start, long long finish) {
  11. if (start > finish) return;
  12. long long distance = start - ((start - finish) / 2);
  13. long long cntt = 1;
  14. long long before = v[0];
  15. for (int i = 1; i < v.size(); i++) {
  16. if (before + distance <= v[i]) {
  17. before = v[i];
  18. cntt++;
  19. //printf("%d ", v[i]);
  20. }
  21. if (cntt > c) {
  22. break;
  23. }
  24. }
  25. //이분탐색을 공유기 갯수 기준으로 가르기
  26. if (cntt >= c) {
  27. if (distance > ans) {
  28. ans = distance;
  29. }
  30. go(distance + 1, finish); //이분탐색을 할 때는 거리를 조절
  31. }
  32. else {
  33. go(start, distance - 1);
  34. }
  35. }
  36. int main() {
  37. scanf("%d %d", &n, &c);
  38. for (int i = 0; i < n; i++) {
  39. scanf("%lld", &tmp);
  40. v.push_back(tmp);
  41. }
  42. sort(v.begin(), v.end());
  43. //printf("%d\n", v[n - 1] - v[0]);
  44. go(1,v[n-1]-v[0]);
  45. printf("%d\n", ans);
  46. return 0;
  47. }
Add Comment
Please, Sign In to add comment