https://www.acmicpc.net/problem/20044
๋ฌธ์
์ฝ๋ฉ ํ๋ก์ ํธ ์์ ์ ๊ฐ๋ฅด์น๋ ์์ฐฌ์ด๋ ํ๋ก์ ํธ ํ์ ๊ฐ๋ฅํ๋ฉด ๊ณต์ ํ๊ฒ ๊ตฌ์ฑํ๋ ค๊ณ ํ๋ค. ํ๋ก์ ํธ ํ ํ๋๋ ๋ ๋ช ์ ํ์์ผ๋ก ๊ตฌ์ฑ๋๋๋ฐ, ๊ฐ ํ์๋ค์ ์ฝ๋ฉ ์ญ๋์ ๋ชจ๋ ๋ค๋ฅด๋ค. ๊ฐ ํ์์ ํ ํ์ ํ์์ด์ด์ผ ํ๋ค. ๊ณต์ ์ฑ์ ๋์ด๊ธฐ ์ํด ์์ฐฌ์ด๋ ํ์ ์ฝ๋ฉ ์ญ๋์ ํฉ์ ์ต๋ํ ์ผ์ ํ๊ฒ ์ ์งํ๋ ค๊ณ ํ๋ค. ํ์๋ค์ด ์ฝ๋ฉ ์ญ๋์ด ์ฃผ์ด์ก์ ๋ ์์ฐฌ์ด๊ฐ ํ์ ๊ตฌ์ฑํ๋๋ฐ ๋์์ด ๋๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
๋ฌธ์ ๋ฅผ ๊ฐ๋จํ๊ฒ ํ๊ธฐ ์ํด, ํ์ ์๋ 2n์ด๋ผ ๊ฐ์ ํ์ (n์ ์์ ์ ์). ๊ฐ ํ์ si์ ์ฝ๋ฉ ์ญ๋์ ์์ ์ ์ w(si)๋ก ๋ํ๋ด๋ฉด ํ i๋ฒ์งธ ํ Gi์ ์ฝ๋ฉ ์ญ๋์ w(Gi) = ∑s∈Giw(s)๋ก ๋ํ๋ผ ์ ์๋ค. ์์ฑํ ํ๋ก๊ทธ๋จ ๋ชฉ์ ์ Sm = min{w(Gi) | 1 ≤ i ≤ n}์ด ์ต๋ํ๋๋๋ก n๊ฐ์ ํ G1, G2, …, Gn ์ ๊ตฌ์ฑํ๊ณ ์ด๋ Sm์ ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด, ํ์๋ค์ ์ฝ๋ฉ ์ญ๋์ด {1, 7, 5, 8}๋ก ์ฃผ์ด์ก๋ค๋ฉด (8, 1), (7, 5)๋ก 2๊ฐ์ ์กฐ๋ฅผ ์งค ์ ์์ผ๋ฉฐ ํ๋ก๊ทธ๋จ์ 9๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ค.
์ ๋ ฅ
์ ๋ ฅ์ ํ์ค์ ๋ ฅ์ ์ฌ์ฉํ๋ค. ์ ๋ ฅ์ ์ฒซ ๋ฒ์งธ ํ์๋ ํ ์๋ฅผ ๋ํ๋ด๋ ์์ ์ ์ n(1 ≤ n ≤ 5,000)์ด ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ํ์ ํ์ si ์ ์ฝ๋ฉ ์ญ๋ w(si)๋ฅผ ๋ํ๋ด๋ 2n๊ฐ์ ์์ ์ ์๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๋ถ๋ฆฌ๋์ด ์ฃผ์ด์ง๋ค (1 ≤ w(si) ≤ 100,000). ํ์๋ค์ ์ฝ๋ฉ ์ญ๋์ ๋ชจ๋ ๋ค๋ฅด๋ค. ์ฆ, i ≠ j์ด๋ฉด w(si) ≠ w(sj)์ด๋ค.
์ถ๋ ฅ
์ถ๋ ฅ์ ํ์ค์ถ๋ ฅ์ ์ฌ์ฉํ๋ค. ํ์ค์ถ๋ ฅ ํ ํ์ Sm์ ์ถ๋ ฅํ๋ค.
ํ์ด
#include <iostream>
#include <algorithm>
using namespace std;
int ans;
void MakePair(int arr[], int n){
// ๋ฐฐ์ด ๊ฐฏ์๊ฐ 2๋ 3์ด๋ฉด ๋ ์์์ชฝ์ ๋ฆฌํด
if(n==2){
ans = arr[0];
}
else if(n==3){
if(arr[0]+arr[2] > arr[1]) ans= arr[1];
else ans= arr[0]+arr[2];
}
//๊ณ์ฐ
int tmp = n/2;
int new_arr[tmp];
for(int i=0; i<tmp; i++){
new_arr[i] = arr[i] + arr[n-1-i];
}
sort(new_arr, new_arr+tmp);
if(n%2 == 1){
//n์ด ํ์์ผ๋ ์ ๊ฐ์ด๋ฐ ์๋ ๊ฐ์ฅ ์์ ์ชฝ์ ๋ํด๋ฒ๋ฆฐ๋ค.
new_arr[0] += arr[tmp];
sort(new_arr, new_arr+tmp);
}
MakePair(new_arr, tmp);
}
int main () {
int n;
cin >> n;
int arr[n];
for(int i=0; i<n; i++){
cin >> arr[i];
}
sort(arr, arr+n);
MakePair(arr, n);
cout << ans;
}
'๐ฆ Chango > ๐ฃ EDOC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ ๋ฐฑ์ค 20170๋ฒ: Commemorative Dice (0) | 2021.10.01 |
---|---|
BOJ ๋ฐฑ์ค 16283๋ฒ : Farm (0) | 2021.09.29 |
[๊ตฌ๋ฆ][C++] 14ํ E-PPER 7๋ฒ : ์ ๋ฌธ๊ธฐ์ฌ (0) | 2021.09.27 |
[๊ตฌ๋ฆ][C++] 10ํ E-PPER 2๋ฒ : OX ํด์ฆ (0) | 2021.09.15 |
[BOJ G5][C++] ๋ฐฑ์ค 14891๋ฒ: ํฑ๋๋ฐํด (0) | 2021.09.08 |