提出 #13251673


ソースコード 拡げる

#include<iostream>
#include<cmath>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<iomanip>
#include<queue>

using namespace std;

typedef long long ll;

typedef std::pair<int, int> ipair;
bool lessPair(const ipair& l, const ipair& r){return l.second < r.second;}
bool morePair(const ipair& l, const ipair& r){return l.second > r.second;}

template<class T> inline bool chmin(T& a, T b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}
template<class T> inline bool chmax(T& a, T b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

const ll MOD = 1e9 + 7;
// const long long INF = 1LL<<60;
void add(long long &a, long long b) { a += b; if (a >= MOD) a -= MOD; }
void sub(long long &a, long long b) { a -= b; if (a < 0) a += MOD; }
void mul(long long &a, long long b) { a *= b; a %= MOD; }
ll llmin(ll a, ll b) { if (a < b) return a; else return b; }
ll llmax(ll a, ll b) { if (a < b) return b; else return a; }
ll llabs(ll a) { if (a >= 0) return a; else return - a; }
ll llmodpow(ll a, ll n) {
   if (n == 0) return 1;
   ll tmp = llmodpow(a, n / 2);
   mul(tmp, tmp);
   if (n & 1) mul(tmp, a);
   return tmp;
}

int main() {
   int N;
   cin >> N;
   ll A[N][N];
   memset(A, 0, sizeof(A));
  
   ll ans = 0;
   for (int i = 0; i < N - 1; i++) {
      for (int j = i + 1; j < N; j++) {
         cin >> A[i][j];
         ans += A[i][j];
      }
   }
   // cout << ans << endl;
   for (int mask = 0; mask < pow(3, N); mask++) {
      int tmp = mask;
      int team = -1;
      ll ans_tmp = 0; 
      vector<int> q0, q1, q2;
      for (int pos = 0; pos < N; pos++) {
         team = tmp % 3;
         if (team == 0) {
            q0.push_back(pos); 
         } else if (team == 1) {
            q1.push_back(pos); 
         } else {
            q2.push_back(pos); 
         }
         tmp /= 3;
      }
      int size;

      size = q0.size();
      sort(q0.begin(), q0.end());
      for (int i = 0; i < size; i++) {
         for (int j = i + 1; j < size; j++) {
            ans_tmp += A[q0[i]][q0[j]];
         }
      }
      // cout << "q0: " << size << " " << ans_tmp << endl;
      size = q1.size();
      sort(q1.begin(), q1.end());
      for (int i = 0; i < size; i++) {
         for (int j = i + 1; j < size; j++) {
            ans_tmp += A[q1[i]][q1[j]];
         }
      }
      // cout << "q1: " << size << " " << ans_tmp << endl;
      size = q2.size();
      sort(q2.begin(), q2.end());
      for (int i = 0; i < size; i++) {
         for (int j = i + 1; j < size; j++) {
            ans_tmp += A[q2[i]][q2[j]];
         }
      }
      // cout << "q2: " << size << " " << ans_tmp << endl;
      // cout << ans << " " << ans_tmp << endl;
      chmax(ans, ans_tmp);
   }
   cout << ans << endl;
   return 0;
}

提出情報

提出日時
問題 G - 組分け
ユーザ redultimate
言語 C++14 (GCC 5.4.1)
得点 6
コード長 2964 Byte
結果 AC
実行時間 38 ms
メモリ 256 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 6 / 6
結果
AC × 2
AC × 50
セット名 テストケース
Sample example_01.txt, example_02.txt
All example_01.txt, example_02.txt, subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_01_18.txt, subtask_01_19.txt, subtask_01_20.txt, subtask_01_21.txt, subtask_01_22.txt, subtask_01_23.txt, subtask_01_24.txt, subtask_01_25.txt, subtask_01_26.txt, subtask_01_27.txt, subtask_01_28.txt, subtask_01_29.txt, subtask_01_30.txt, subtask_01_31.txt, subtask_01_32.txt, subtask_01_33.txt, subtask_01_34.txt, subtask_01_35.txt, subtask_01_36.txt, subtask_01_37.txt, subtask_01_38.txt, subtask_01_39.txt, subtask_01_40.txt, subtask_01_41.txt, subtask_01_42.txt, subtask_01_43.txt, subtask_01_44.txt, subtask_01_45.txt, subtask_01_46.txt, subtask_01_47.txt, subtask_01_48.txt
ケース名 結果 実行時間 メモリ
example_01.txt AC 2 ms 256 KiB
example_02.txt AC 1 ms 256 KiB
subtask_01_01.txt AC 37 ms 256 KiB
subtask_01_02.txt AC 37 ms 256 KiB
subtask_01_03.txt AC 2 ms 256 KiB
subtask_01_04.txt AC 1 ms 256 KiB
subtask_01_05.txt AC 37 ms 256 KiB
subtask_01_06.txt AC 37 ms 256 KiB
subtask_01_07.txt AC 1 ms 256 KiB
subtask_01_08.txt AC 2 ms 256 KiB
subtask_01_09.txt AC 37 ms 256 KiB
subtask_01_10.txt AC 37 ms 256 KiB
subtask_01_11.txt AC 1 ms 256 KiB
subtask_01_12.txt AC 2 ms 256 KiB
subtask_01_13.txt AC 36 ms 256 KiB
subtask_01_14.txt AC 37 ms 256 KiB
subtask_01_15.txt AC 1 ms 256 KiB
subtask_01_16.txt AC 2 ms 256 KiB
subtask_01_17.txt AC 37 ms 256 KiB
subtask_01_18.txt AC 37 ms 256 KiB
subtask_01_19.txt AC 12 ms 256 KiB
subtask_01_20.txt AC 5 ms 256 KiB
subtask_01_21.txt AC 37 ms 256 KiB
subtask_01_22.txt AC 37 ms 256 KiB
subtask_01_23.txt AC 5 ms 256 KiB
subtask_01_24.txt AC 1 ms 256 KiB
subtask_01_25.txt AC 37 ms 256 KiB
subtask_01_26.txt AC 37 ms 256 KiB
subtask_01_27.txt AC 5 ms 256 KiB
subtask_01_28.txt AC 1 ms 256 KiB
subtask_01_29.txt AC 37 ms 256 KiB
subtask_01_30.txt AC 37 ms 256 KiB
subtask_01_31.txt AC 2 ms 256 KiB
subtask_01_32.txt AC 2 ms 256 KiB
subtask_01_33.txt AC 37 ms 256 KiB
subtask_01_34.txt AC 37 ms 256 KiB
subtask_01_35.txt AC 2 ms 256 KiB
subtask_01_36.txt AC 1 ms 256 KiB
subtask_01_37.txt AC 37 ms 256 KiB
subtask_01_38.txt AC 37 ms 256 KiB
subtask_01_39.txt AC 2 ms 256 KiB
subtask_01_40.txt AC 1 ms 256 KiB
subtask_01_41.txt AC 37 ms 256 KiB
subtask_01_42.txt AC 37 ms 256 KiB
subtask_01_43.txt AC 1 ms 256 KiB
subtask_01_44.txt AC 36 ms 256 KiB
subtask_01_45.txt AC 1 ms 256 KiB
subtask_01_46.txt AC 1 ms 256 KiB
subtask_01_47.txt AC 37 ms 256 KiB
subtask_01_48.txt AC 38 ms 256 KiB