2805๋ฒ: ๋๋ฌด ์๋ฅด๊ธฐ
์ฒซ์งธ ์ค์ ๋๋ฌด์ ์ N๊ณผ ์๊ทผ์ด๊ฐ ์ง์ผ๋ก ๊ฐ์ ธ๊ฐ๋ ค๊ณ ํ๋ ๋๋ฌด์ ๊ธธ์ด M์ด ์ฃผ์ด์ง๋ค. (1 โค N โค 1,000,000, 1 โค M โค 2,000,000,000) ๋์งธ ์ค์๋ ๋๋ฌด์ ๋์ด๊ฐ ์ฃผ์ด์ง๋ค. ๋๋ฌด์ ๋์ด์ ํฉ์ ํญ์ M๋ณด
www.acmicpc.net
๋ฌธ์
์๊ทผ์ด๋ ๋๋ฌด M๋ฏธํฐ๊ฐ ํ์ํ๋ค. ๋ชฉ์ฌ์ ๋จ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ด ๋์ํ๋ค. ๋จผ์ , ์๊ทผ์ด๋ ์ ๋จ๊ธฐ์ ๋์ด H๋ฅผ ์ง์ ํด์ผ ํ๋ค. ๋์ด๋ฅผ ์ง์ ํ๋ฉด ํฑ๋ ์ด ๋
์ผ๋ก๋ถํฐ H๋ฏธํฐ ์๋ก ์ฌ๋ผ๊ฐ๋ค. ๊ทธ ๋ค์, ํ ์ค์ ์ฐ์ํด์๋ ๋๋ฌด๋ฅผ ๋ชจ๋ ์ ๋จํด๋ฒ๋ฆฐ๋ค. ๋ฐ๋ผ์, ๋์ด๊ฐ H๋ณด๋ค ํฐ ๋๋ฌด๋ H ์์ ๋ถ๋ถ์ด ์๋ฆด ๊ฒ์ด๊ณ , ๋ฎ์ ๋๋ฌด๋ ์๋ฆฌ์ง ์์ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ํ ์ค์ ์ฐ์ํด์๋ ๋๋ฌด์ ๋์ด๊ฐ 20, 15, 10, 17์ด๋ผ๊ณ ํ์. ์๊ทผ์ด๊ฐ ๋์ด๋ฅผ 15๋ก ์ง์ ํ๋ค๋ฉด, ๋๋ฌด๋ฅผ ์๋ฅธ ๋ค์ ๋์ด๋ 15, 15, 10, 15๊ฐ ๋ ๊ฒ์ด๊ณ , ์๊ทผ์ด๋ ๊ธธ์ด๊ฐ 5์ธ ๋๋ฌด์ 2์ธ ๋๋ฌด๋ฅผ ๋ค๊ณ ์ง์ ๊ฐ ๊ฒ์ด๋ค. (์ด 7๋ฏธํฐ๋ฅผ ์ง์ ๋ค๊ณ ๊ฐ๋ค) ์ ๋จ๊ธฐ์ ์ค์ ํ ์ ์๋ ๋์ด๋ ์์ ์ ์ ๋๋ 0์ด๋ค.
์๊ทผ์ด๋ ๋๋ฌด๋ฅผ ํ์ํ ๋งํผ๋ง ์ง์ผ๋ก ๊ฐ์ ธ๊ฐ๋ ค๊ณ ํ๋ค. ์ด๋, ์ ์ด๋ M๋ฏธํฐ์ ๋๋ฌด๋ฅผ ์ง์ ๊ฐ์ ธ๊ฐ๊ธฐ ์ํด์ ์ ๋จ๊ธฐ์ ์ค์ ํ ์ ์๋ ๋์ด์ ์ต๋๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์
๋ ฅ
์ฒซ์งธ ์ค์ ๋๋ฌด์ ์ N๊ณผ ์๊ทผ์ด๊ฐ ์ง์ผ๋ก ๊ฐ์ ธ๊ฐ๋ ค๊ณ ํ๋ ๋๋ฌด์ ๊ธธ์ด M์ด ์ฃผ์ด์ง๋ค. (1 โค N โค 1,000,000, 1 โค M โค 2,000,000,000)
๋์งธ ์ค์๋ ๋๋ฌด์ ๋์ด๊ฐ ์ฃผ์ด์ง๋ค. ๋๋ฌด์ ๋์ด์ ํฉ์ ํญ์ M๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ธฐ ๋๋ฌธ์, ์๊ทผ์ด๋ ์ง์ ํ์ํ ๋๋ฌด๋ฅผ ํญ์ ๊ฐ์ ธ๊ฐ ์ ์๋ค. ๋์ด๋ 1,000,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ ์ ๋๋ 0์ด๋ค.
์ถ๋ ฅ
์ ์ด๋ M๋ฏธํฐ์ ๋๋ฌด๋ฅผ ์ง์ ๊ฐ์ ธ๊ฐ๊ธฐ ์ํด์ ์ ๋จ๊ธฐ์ ์ค์ ํ ์ ์๋ ๋์ด์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
4 7
20 15 10 17
์์ ์ถ๋ ฅ
15
์ถ๊ฐ ํ ์คํธ ์ผ์ด์ค
5 2000000000
900000000 900000000 900000000 900000000 900000000
๊ฒฐ๊ณผ : 500000000
๋ฌธ์ ์ค๋ช

๋ฌธ์ ํ์ด
- ์ ์ผ ํฐ ๋๋ฌด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ถํ์์ ํ๋ค. (๊ทธ๋ผ ํฐ ๋๋ฌด๋ฅผ ์ฐพ์์ผ ํ๋ค.)
- ์ ์ผ ํฐ ๋๋ฌด๊ฐ ๋ง์ผ 20์ด๋ฉด ์ค๊ฐ๊ฐ์ด 10์ด๋ฏ๋ก, ๋๋ฌด๋ค์ 10m๋ก ์๋ฅธ๋ค.
- ๊ทธ๋ผ ๊ฐ์ ธ๊ฐ๋ ค๋ ๋๋ฌด๊ฐ 22๊ฐ ๋๋ค. ํ์ง๋ง ์๋ ๊ฐ์ ธ๊ฐ๋ ค๋ ๋๋ฌด๋ 7์ด๋ค. ์ํ๋ ๊ธธ์ด๋ณด๋ค ๋ ๊ฐ์ ธ๊ฐ๋ฏ๋ก 10m๋ณด๋ค ๋ ๋ง์ด ์๋ผ์ผ ํ๋ค.
- ๊ทธ๋ฌ๋ฏ๋ก 11~20๊น์ง ๋ค์ ์ด๋ถํ์์ ์์ํ๋ค.
- ์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๊ณ , ์ต๋๊ฐ์ ์ฐพ์ผ๋ฉด ์ถ๋ ฅํ๋ค.
Solution
#include <stdio.h>
int N, M; //๋๋ฌด ๊ฐ์, ๊ธธ์ด
long long H[1000001]; //๋๋ฌด ๋์ด
long long start, end, min, tree=0, result;
int main() {
scanf("%d %d",&N, &M);
for(int i=0; i < N; i++){
scanf("%lld",&H[i]);
}
//end = H[0]; //๋๋ฌด ์ต๋๊ฐ ๊ตฌํ๊ธฐ
for(int i = 0; i < N; i++){
if(H[i] >= end) end = H[i];
}
//์ต๋๊ฐ์ ์ฐพ์์ผ๋ ์ด๋ถํ์์ ์์ํ๋ค.
while(start <= end){
min = (start + end)/2;
tree = 0;
//์ ์ฒด ๋๋ฌด๋ฅผ ์ค๊ฐ๊ฐ์ผ๋ก ์๋ฅด๊ธฐ
for(int i=0; i < N; i++){
if(H[i] > min){
tree += (H[i] - min); //์๋ฅธ ๋๋ฌด ๋ค ๋ํ๊ธฐ
}
}
//์ ๋ต์ ๋ถํฉํ๋์ง ํ์ธ
if(M <= tree && min > result){
result = min;
}
if(M > tree)
end = min - 1;
else
start = min + 1;
}
printf("%lld\n",result);
return 0;
}'๐งฉ Algorithm > [BOJ] Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| BOJ 1654๋ฒ : ๋์ ์๋ฅด๊ธฐ (C++/Silver 2) (0) | 2022.09.18 |
|---|---|
| BOJ 10815๋ฒ : ์ซ์ ์นด๋ (C++/Silver 5) (0) | 2022.09.16 |
| BOJ 1094๋ฒ : ๋ง๋๊ธฐ (C++/Silver 5) (0) | 2022.09.05 |
| BOJ 1158๋ฒ : ์์ธํธ์ค ๋ฌธ์ (C++/Silver 4) (0) | 2022.09.03 |
| BOJ 2751๋ฒ : ์ ์ ๋ ฌํ๊ธฐ 2 (C++/Silver 5) (0) | 2022.07.11 |