File tree Expand file tree Collapse file tree 1 file changed +57
-0
lines changed
weekly/week3/BOJ_1477_휴게소 세우기 Expand file tree Collapse file tree 1 file changed +57
-0
lines changed Original file line number Diff line number Diff line change 1+ #include < iostream>
2+ #include < vector>
3+ #include < algorithm>
4+
5+ using namespace std ;
6+
7+ vector<int > v;
8+
9+ // 휴게소 간 최대 거리를 x로 했을 때, 설치 가능한 휴게소의 수를 리턴
10+ int chk (int x) {
11+ int cnt = 0 ;
12+ for (int i = 0 ; i < v.size () - 1 ; i++) {
13+ int gap = v[i + 1 ] - v[i];
14+
15+ if (gap % x == 0 ) {
16+ cnt += gap / x - 1 ;
17+ }
18+ else {
19+ cnt += gap / x;
20+ }
21+ }
22+
23+ return cnt;
24+ }
25+
26+ int main () {
27+ int n, m, l;
28+ cin >> n >> m >> l;
29+
30+ for (int i = 0 ; i < n; i++) {
31+ int x;
32+ cin >> x;
33+ v.push_back (x);
34+ }
35+ v.push_back (0 );
36+ v.push_back (l);
37+
38+ sort (v.begin (), v.end ());
39+
40+ int left = 1 ;
41+ int right = l;
42+ int mid;
43+ while (left <= right) {
44+ mid = (left + right) / 2 ; // mid: 휴게소 간 최대 거리
45+
46+ int cnt = chk (mid);
47+
48+ if (cnt <= m) {
49+ right = mid - 1 ;
50+ }
51+ else {
52+ left = mid + 1 ;
53+ }
54+ }
55+
56+ cout << left;
57+ }
You can’t perform that action at this time.
0 commit comments