블로그 언저리인 무언가
[백준/BOJ] 14889 스타트와 링크 본문
728x90
문제 : 14889 스타트와 링크
짝수인 수의 사람이 주어졌을 때, 절반으로 나눠 각 팀 능력치
합의 차이가 최소일 때 그 값을 출력하는 문제이다.
next_permutation을 사용해 모든 경우의 수를 구하고
각 경우의 능력치 차이를 구해 최솟값을 갱신한 후 출력하면 된다.
Code
#include <bits/stdc++.h>
#define ll long long
#define INF 987654321
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
ll N, arr[25][25], ans=INF;
vector<ll> chk;
cin >> N;
for (int i=0;i<N;i++){
for (int j=0;j<N;j++){
cin >> arr[i][j];
}
}
for (int i=0;i<N/2;i++){
chk.push_back(0);
}
for (int i=0;i<N/2;i++){
chk.push_back(1);
}
do{
ll cnt[2]={0,};
for (int i=0;i<N;i++){
for (int j=i+1;j<N;j++){
if (chk[i]==chk[j]){
cnt[chk[i]]+=arr[i][j]+arr[j][i];
}
}
}
ans=min(abs(cnt[0]-cnt[1]),ans);
}while (next_permutation(chk.begin(),chk.end()));
cout << ans;
return 0;
}
728x90
'Programming > BOJ' 카테고리의 다른 글
[백준/BOJ] 14890 경사로 (0) | 2020.09.22 |
---|---|
[백준/BOJ] 1057 토너먼트 (0) | 2020.09.21 |
[백준/BOJ] 10779 쇠막대기 (0) | 2020.09.21 |
[백준/BOJ] 1235 학생 번호 (0) | 2020.09.21 |
[백준/BOJ] 1668 트로피 진열 (0) | 2020.09.19 |
Comments