BOJ/C++ 개똥벌레 IamToday 2020. 3. 3. 23:43 #include #include #include #define MAXN 200001 #define MAXH 500001 using namespace std; int suk[MAXH], jong[MAXH], res[MAXH]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); //각 구간별로 장애물 개수를 센다. int n, h; cin >> n >> h; int cnts = 0, cntj = 0; for (int i = 0; i < n; i++) { //맨 처음에는 석순부터 시작하고 그 이후에는 종유석과 석순이 번갈아가며 나타난다. int tmp; cin >> tmp; if (i % 2 == 0) { //석순 suk[cnts++] = tmp; } else { jong[cntj++] = tmp; } } sort(suk, suk + cnts ); sort(jong, jong + cntj ); for (int i = 1; i <= h; i++) { //현재 구간에서 석순은 이 높이 이상인경우, 종유석은 이 높이까지 내려온 경우에 장애물 개수 ++ int idx = lower_bound(suk, suk + cnts, i) - suk; res[i] += cnts - idx; int idx2 = lower_bound(jong, jong + cntj, h - i + 1) - jong; res[i] += cntj - idx2; } sort(res+1, res + h+1); int minCnt = 1; for (int i = 2; i <= h; i++) { if (res[i] <= res[1]) { minCnt++; } } cout << res[1] << " " << minCnt << '\n'; return 0; } 공유하기 게시글 관리 나는 오늘, 'BOJ > C++' 카테고리의 다른 글 에너지모으기 (0) 2020.03.04 두 동전 (0) 2020.03.04 달리기 (0) 2020.03.03 배열돌리기3 (0) 2020.03.03 이동하기 (0) 2020.03.02 'BOJ/C++' Related Articles 에너지모으기 두 동전 달리기 배열돌리기3