[๋ฐฑ์ค(BOJ)] Thread Knots(17976) C++
๋ฌธ์ : BOJ_17976๋ฒ Thread Knots
๋ฌธ์ ์ค๋ช
์ด๋ถํ์
n ๊ฐ์ thread๊ฐ ์ฃผ์ด์ง๊ณ , ์ด thread ํ๋ํ๋๋ง๋ค ์ ์ ์ฐ์ด์ผ ํฉ๋๋ค.
์ด๋ ์ ์ x์ขํ์ ๊ฐ๊ฒฉ์ ์ต์๊ฐ์ด ์ต๋๊ฐ ๋๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๊ฒ์ด ๋ฌธ์ ์
๋๋ค.
์ ์ ๋ฒ์๊ฐ 0๋ถํฐ 1000000000์ด๊ธฐ ๋๋ฌธ์ ์์ ํ์์ผ๋ก ์ ์ ๊ฐ๊ฒฉ์ ํ์
ํ๊ธฐ๋ ์ด๋ ค์ฐ๋ฏ๋ก, ์ด๋ถ ํ์์ ์ด์ฉํด์ผ ํฉ๋๋ค.
Solution
์ฐ์ thread์ ๋ฒ์๋ฅผ ๋ฒกํฐ๋ก ์
๋ ฅ๋ฐ์ ๋ค, ๋ฒกํฐ๋ฅผ ์ ๋ ฌํฉ๋๋ค.
์์๋๋ก ์ ๋ ฌํ ๊ฐ์ ์ํํ๋ฉด์ ํ์ฌ ์ด๋ถ ํ์์ mid ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ต์๊ฐ์ผ๋ก ๊ฐ thread๋ง๋ค ์ ์ ์ฐ์ ์ ์๋์ง ํ์ธํฉ๋๋ค.
ํ์ธ์ ์ํด์ ์ฐ์ ์ฒซ ๋ฒ์งธ thread์ ์์์ ์ ์ฒซ ๋ฒ์งธ ์ ์ ์ฐ์ด์ค์ผ ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์ ์ด ์ผ์ชฝ์ ์์์๋ก ์ ๋ค ๊ฐ์ ๊ฑฐ๋ฆฌ์ ์ต๋๊ฐ์ด ์ปค์ง ์ ์์ต๋๋ค.
๊ทธ ํ ๋ค์ thread๋ถํฐ ๊ฐ thread๋ฅผ ์ํํฉ๋๋ค.
์ด๋ ๋ง์ง๋ง์ผ๋ก ์ฐ์ ์ + mid ๊ฐ์ด ๋ค์ thread์ ๋ ๊ฐ์ ๋์ด๊ฐ๋ฉด ์ฑ๋ฆฝํ์ง ์์ผ๋ฏ๋ก ๋ค์ right ๊ฐ์ ๋ฎ์ถ๊ณ ๋ค์ ์ด๋ถ ํ์ํฉ๋๋ค.
๋ง์ฝ ๋ค์ thread์ ๋ ๊ฐ ๋ณด๋ค ๋ง์ง๋ง์ผ๋ก ์ฐ์ ์ + mid ๊ฐ์ด ์๋ค๋ฉด, ๋ง์ง๋ง ์ + mid ๊ฐ๊ณผ ๋ค์ thread์ ์์ ์ ์ค ์ต๋๊ฐ์ ์์น์ ๋ค์ ์ ์ ์ฐ๊ณ ๋ค์ ์ํํฉ๋๋ค.
๋ ํ ๊ฐ์ฅ ํฐ ์ ์ด 1000000000์ด๊ธฐ ๋๋ฌธ์ mid ์ฐ์ฐ์์ int ๊ฐ์ ๋์ด๊ฐ ์ ์์ผ๋ฏ๋ก long longํ์ผ๋ก ์ ์ธํด ์ค๋๋ค.
Description
- ๋ฒกํฐ ๊ฐ์ sort๋ก ์ ๋ ฌํ์ต๋๋ค.
- pair๋ฅผ sort๋ก ์ ๋ ฌ ์, pair์ ์ฒซ ๋ฒ์งธ ๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
- ํด๋น mid ๊ฐ์ด ์ฑ๋ฆฝํ๋์ง๋
isBossible
ํจ์์์ ํ์ธํ์ต๋๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
long long n, le, ri,ans;
vector<pair<long long,long long>> adj;
bool isPossible(long long val);
int main(){
cin >> n;
for(int i=0;i<n;i++){
long long st,ed;
cin >> st >> ed;
adj.push_back({st,st+ed});
ri=max(ri,st+ed);
}
sort(adj.begin(),adj.end());
while(le<=ri){
long long mid = (le+ri)/2;
if(isPossible(mid)) {
ans=mid;
le =mid+1;
}
else ri = mid-1;
}
cout << ans << '\n';
return 0;
}
bool isPossible(long long val){
long long now = adj[0].first;
for(int i=1;i<n;i++){
if(now+val > adj[i].second) return false;
else {
now = max(adj[i].first,now+val);
}
}
return true;
}
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ํ๋ ธ์ด ํ ์ด๋ ์์(11729) (0) | 2022.03.13 |
---|---|
[BOJ] ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด(11054) (0) | 2022.03.13 |
[BOJ] LCS(9251) (0) | 2022.03.12 |
[BOJ] ๊ณ๋จ ์ค๋ฅด๊ธฐ(2579) (0) | 2022.03.12 |
[BOJ] ์ด์ง ํธ๋ฆฌ(13325) (0) | 2022.03.12 |