diff --git "a/\353\260\261\354\244\200/Gold/2110.\342\200\205\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230/README.md" "b/\353\260\261\354\244\200/Gold/2110.\342\200\205\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230/README.md" index fa2bdba..0d47c7d 100644 --- "a/\353\260\261\354\244\200/Gold/2110.\342\200\205\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230/README.md" +++ "b/\353\260\261\354\244\200/Gold/2110.\342\200\205\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230/README.md" @@ -4,7 +4,7 @@ ### 성능 요약 -메모리: 3572 KB, 시간: 128 ms +메모리: 2804 KB, 시간: 32 ms ### 분류 @@ -12,7 +12,7 @@ ### 제출 일자 -2024년 5월 4일 08:42:44 +2024년 5월 4일 08:56:12 ### 문제 설명 diff --git "a/\353\260\261\354\244\200/Gold/2110.\342\200\205\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230/\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230.cc" "b/\353\260\261\354\244\200/Gold/2110.\342\200\205\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230/\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230.cc" index 069d3dd..5ceda0e 100644 --- "a/\353\260\261\354\244\200/Gold/2110.\342\200\205\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230/\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230.cc" +++ "b/\353\260\261\354\244\200/Gold/2110.\342\200\205\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230/\352\263\265\354\234\240\352\270\260\342\200\205\354\204\244\354\271\230.cc" @@ -1,47 +1,41 @@ #include -#include #include +#include using namespace std; -int main(void) -{ - int n, c, num, st, router, start, end, mid, ans = 0; - cin >> n >> c; - vector pos; - for (int i = 0; i < n; i++) - { - cin >> num; - pos.push_back(num); - } - sort(pos.begin(), pos.end()); - start = 1; // 최소 거리 - end = pos[n - 1] - pos[0]; // 최대 거리 +int main() { + ios_base::sync_with_stdio(0); + cin.tie(0); - while (start <= end) - { - router = 1; - mid = (start + end) / 2; - st = pos[0]; + int n, m; + cin >> n >> m; + vector house(n, 0); - for (int i = 1; i < n; i++) - { - if (pos[i] - st >= mid) - { - router++; - st = pos[i]; - } - } + for (int i = 0; i < n; i++) { + cin >> house[i]; + } + sort(house.begin(),house.end()); - if (router >= c) - { - ans = max(ans, mid); - start = mid + 1; - } + int s = 1, e = house[n-1] - house[0], ans = 0; + while(s <= e) { + int r = 1; + int mid = (s + e) / 2; + int x = house[0]; + for (int i = 1; i < n; i++) { + if (house[i] - x >= mid) { + r++; + x = house[i]; + } + } + if (r >= m) { + ans = max(ans, mid); + s = mid+1; + } else { + e = mid-1; + } + } + cout << ans; - else - end = mid - 1; - } - cout << ans; - return 0; -} \ No newline at end of file + return 0; +}