Language: C++

include <bits/stdc++.h>
using namespace std;
using i64 = int64_t;
using vi = vector<i64>;
using vvi = vector<vi>;

// 二部グラフの最大重みマッチング
class Hungarian {
    int n, p, q;
    vvi mat;
    vi fx, fy, x, y;
    const i64 INF = 1e9;

public:
    Hungarian(const vvi& mat) : mat(mat) {
        n = mat.size();
        fx.assign(n, INF);
        fy.assign(n, 0);
        x.assign(n, -1);
        y.assign(n, -1);
    }

    i64 run() {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                fx[i] = max(fx[i], mat[i][j]);
            }
        }

        for (int i = 0; i < n;) {
            vi t(n, -1), s(n + 1, i);
            for (p = q = 0; p <= q && x[i] < 0; p++) {
                for (int k = s[p], j = 0; j < n && x[i] < 0; j++) {
                    if (fx[k] + fy[j] == mat[k][j] && t[j] < 0) {
                        s[++q] = y[j];
                        t[j] = k;
                        if (s[q] < 0) {
                            for (p = j; p >= 0; j = p) {
                                y[j] = k = t[j];
                                p = x[k];
                                x[k] = j;
                            }
                        }
                    }
                }
            }
            if (x[i] < 0) {
                i64 d = INF;
                for (int k = 0; k <= q; k++) {
                    for (int j = 0; j < n; j++) {
                        if (t[j] < 0) {
                            d = min(d, fx[s[k]] + fy[j] - mat[s[k]][j]);
                        }
                    }
                }
                for (int j = 0; j < n; j++) {
                    fy[j] += (t[j] < 0 ? 0 : d);
                }
                for (int k = 0; k <= q; k++) {
                    fx[s[k]] -= d;
                }
            } else {
                i++;
            }
        }
        i64 ret = 0;
        for (int i = 0; i < n; i++) {
            ret += mat[i][x[i]];
        }
        return ret;
    }

    int match_y(int k) {
        return x[k];
    }

    int match_x(int k) {
        return y[k];
    }
};

int main() {
    int n;
    while (cin >> n) {
        if (n == 0) break;
        long long sum = 0;
        vector<vector<int>> as(n);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 3; j++) {
                int a;
                cin >> a;
                as[i].push_back(a);
            }
            sum += as[i][0] * as[i][1] * as[i][2];
            sort(as[i].begin(), as[i].end());
        }
        vvi mat(n, vi(n));
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                bool ok = true;
                for (int k = 0; k < 3; k++) {
                    if (as[i][k] >= as[j][k]) ok = false;
                }
                if (ok) {
                    mat[i][j] = as[i][0] * as[i][1] * as[i][2];
                }
            }
        }
        Hungarian h(mat);
        cout << sum - h.run() << endl;
    }
}


Compiler output:
a.cc:1:1: error: 'include' does not name a type
    1 | include <bits/stdc++.h>
      | ^~~~~~~
a.cc:3:13: error: 'int64_t' does not name a type
    3 | using i64 = int64_t;
      |             ^~~~~~~
a.cc:1:1: note: 'int64_t' is defined in header '<cstdint>'; this is probably fixable by adding '#include <cstdint>'
  +++ |+#include <cstdint>
    1 | include <bits/stdc++.h>
a.cc:4:12: error: 'vector' does not name a type
    4 | using vi = vector<i64>;
      |            ^~~~~~
a.cc:5:13: error: 'vector' does not name a type
    5 | using vvi = vector<vi>;
      |             ^~~~~~
a.cc:10:5: error: 'vvi' does not name a type
   10 |     vvi mat;
      |     ^~~
a.cc:11:5: error: 'vi' does not name a type; did you mean 'void'?
   11 |     vi fx, fy, x, y;
      |     ^~
      |     void
a.cc:12:11: error: 'i64' does not name a type
   12 |     const i64 INF = 1e9;
      |           ^~~
a.cc:15:21: error: 'vvi' does not name a type
   15 |     Hungarian(const vvi& mat) : mat(mat) {
      |                     ^~~
a.cc:23:5: error: 'i64' does not name a type
   23 |     i64 run() {
      |     ^~~
a.cc: In constructor 'Hungarian::Hungarian(const int&)':
a.cc:15:33: error: class 'Hungarian' does not have any field named 'mat'
   15 |     Hungarian(const vvi& mat) : mat(mat) {
      |                                 ^~~
a.cc:16:17: error: request for member 'size' in 'mat', which is of non-class type 'const int'
   16 |         n = mat.size();
      |                 ^~~~
a.cc:17:9: error: 'fx' was not declared in this scope
   17 |         fx.assign(n, INF);
      |         ^~
a.cc:17:22: error: 'INF' was not declared in this scope
   17 |         fx.assign(n, INF);
      |                      ^~~
a.cc:18:9: error: 'fy' was not declared in this scope
   18 |         fy.assign(n, 0);
      |         ^~
a.cc:19:9: error: 'x' was not declared in this scope
   19 |         x.assign(n, -1);
      |         ^
a.cc:20:9: error: 'y' was not declared in this scope
   20 |         y.assign(n, -1);
      |         ^
a.cc: In member function 'int Hungarian::match_y(int)':
a.cc:74:16: error: 'x' was not declared in this scope
   74 |         return x[k];
      |                ^
a.cc: In member function 'int Hungarian::match_x(int)':
a.cc:78:16: error: 'y' was not declared in this scope
   78 |         return y[k];
      |                ^
a.cc: In function 'int main()':
a.cc:84:12: error: 'cin' was not declared in this scope
   84 |     while (cin >> n) {
      |            ^~~
a.cc:87:9: error: 'vector' was not declared in this scope
   87 |         vector<vector<int>> as(n);
      |         ^~~~~~
a.cc:87:23: error: expected primary-expression before 'int'
   87 |         vector<vector<int>> as(n);
      |                       ^~~
a.cc:92:17: error: 'as' was not declared in this scope; did you mean 'a'?
   92 |                 as[i].push_back(a);
      |                 ^~
      |                 a
a.cc:94:20: error: 'as' was not declared in this scope
   94 |             sum += as[i][0] * as[i][1] * as[i][2];
      |                    ^~
a.cc:95:13: error: 'sort' was not declared in this scope; did you mean 'short'?
   95 |             sort(as[i].begin(), as[i].end());
      |             ^~~~
      |             short
a.cc:97:9: error: 'vvi' was not declared in this scope
   97 |         vvi mat(n, vi(n));
      |         ^~~
a.cc:102:25: error: 'as' was not declared in this scope
  102 |                     if (as[i][k] >= as[j][k]) ok = false;
      |                         ^~
a.cc:105:21: error: 'mat' was not declared in this scope
  105 |                     mat[i][j] = as[i][0] * as[i][1] * as[i][2];
      |                     ^~~
a.cc:105:33: error: 'as' was not declared in this scope
  105 |                     mat[i][j] = as[i][0] * as[i][1] * as[i][2];
      |                                 ^~
a.cc:109:21: error: 'mat' was not declared in this scope
  109 |         Hungarian h(mat);
      |                     ^~~
a.cc:110:9: error: 'cout' was not declared in this scope
  110 |         cout << sum - h.run() << endl;
      |         ^~~~
a.cc:110:25: error: 'class Hungarian' has no member named 'run'
  110 |         cout << sum - h.run() << endl;
      |                         ^~~
a.cc:110:34: error: 'endl' was not declared in this scope
  110 |         cout << sum - h.run() << endl;
      |                                  ^~~~