結果
| 問題 | No.698 ペアでチームを作ろう |
| ユーザー |
|
| 提出日時 | 2021-05-21 21:40:02 |
| 言語 | C++11(廃止可能性あり) (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 6 ms / 1,000 ms |
| コード長 | 951 bytes |
| 記録 | |
| コンパイル時間 | 2,906 ms |
| コンパイル使用メモリ | 159,592 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-10 08:11:48 |
| 合計ジャッジ時間 | 2,572 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 12 |
ソースコード
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
using ll = long long;
using pp = pair<int,int>;
#define rep(i,n) for(int i = 0;i<n;i++)
#define printv(v) for(auto x : v) cout << x << " "; cout << "\n"; // v の要素を表示
#define printv2(v) for(auto x : v) {printv(x);cout << "\n";};
int N;
int A[14];
int main() {
// Input
cin >> N;
rep(i, N) cin >> A[i];
vector<int> dp(1 << N,0);
rep(i, 1<<N){
rep(j, N) for (int k = j + 1;k < N; k++){
if ((i >> j) & (i >> k) & 1){
//cout << i << j << k << i-(1<<j)-(1<<k) << (A[j]^A[k]) << endl;
//cout << dp[i] << "#" << dp[i-(1<<j)-(1<<k)] << endl;
dp[i] = max(dp[i], dp[i-(1<<j)-(1<<k)]+(A[j]^A[k]));
//cout << i << dp[i] << endl;
}
}
}
cout << dp[(1<<N)-1] << endl;
//rep(i,1 << N) cout << dp[i] << endl;
//rep(i, N) cout << A[i] << endl;
}