← Back to List

14889번: 스타트와 링크 ↗

Solutions

C++14
1.0 KB | 1042 chars
#include <bits/stdc++.h>
#define Mx 987654321
using namespace std;
int N,Min=Mx;
int ar[22];
int D[22][22];
vector <int> V1;
vector <int> V2;
int main()
{
    cin>>N;
    for(int y=0; y<N; y++)
    {
        for(int x=0; x<N; x++) cin>>D[y][x];
    }
    for(int x=N/2; x<N; x++) ar[x]=1;

    do
    {
        V1.clear();
        V2.clear();
        for(int x=0; x<N; x++)
        {
            if(ar[x]==1) V2.push_back(x);
            else V1.push_back(x);
        }
        int S1=0;
        int S2=0;
        for(auto iter=V1.begin(); iter != V1.end(); iter++)
        {
            for (auto iter2 = V1.begin(); iter2 != V1.end(); iter2++)
            {
                S1+=D[*iter][*iter2];
            }
        }

        for(auto iter=V2.begin(); iter != V2.end(); iter++)
        {
            for (auto iter2 = V2.begin(); iter2 != V2.end(); iter2++)
            {
                S2+=D[*iter][*iter2];
            }
        }
        if(abs(S1-S2)<Min) Min=abs(S1-S2);
    }
    while(next_permutation(ar,ar+N));
    cout<<Min;
}