結果

問題 No.699 ペアでチームを作ろう2
ユーザー peroon
提出日時 2019-12-03 20:50:25
言語 C++14
(gcc 8.3.0)
結果
AC  
実行時間 352 ms
コード長 3,390 Byte
コンパイル時間 2,018 ms
使用メモリ 1,548 KB
最終ジャッジ日時 2019-12-03 20:50:31

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
sample1.txt AC 4 ms
1,528 KB
sample2.txt AC 4 ms
1,528 KB
sample3.txt AC 6 ms
1,540 KB
test1.txt AC 5 ms
1,548 KB
test2.txt AC 17 ms
1,544 KB
test3.txt AC 3 ms
1,528 KB
test4.txt AC 4 ms
1,540 KB
test5.txt AC 352 ms
1,540 KB
test6.txt AC 306 ms
1,544 KB
test7.txt AC 291 ms
1,528 KB
test8.txt AC 292 ms
1,544 KB
test9.txt AC 291 ms
1,540 KB
test10.txt AC 336 ms
1,548 KB
test11.txt AC 300 ms
1,536 KB
test12.txt AC 305 ms
1,540 KB
テストケース一括ダウンロード

ソースコード

diff #
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using VI = vector<ll>;
using VV = vector<VI>;
using VS = vector<string>;
using PII = pair<ll, ll>;

// tourist set
template <typename A, typename B>
string to_string(pair<A, B> p);

template <typename A, typename B, typename C>
string to_string(tuple<A, B, C> p);

template <typename A, typename B, typename C, typename D>
string to_string(tuple<A, B, C, D> p);

string to_string(const string& s) {
  return '"' + s + '"';
}

string to_string(const char* s) {
  return to_string((string) s);
}

string to_string(bool b) {
  return (b ? "true" : "false");
}

string to_string(vector<bool> v) {
  bool first = true;
  string res = "{";
  for (int i = 0; i < static_cast<int>(v.size()); i++) {
    if (!first) {
      res += ", ";
    }
    first = false;
    res += to_string(v[i]);
  }
  res += "}";
  return res;
}

template <size_t N>
string to_string(bitset<N> v) {
  string res = "";
  for (size_t i = 0; i < N; i++) {
    res += static_cast<char>('0' + v[i]);
  }
  return res;
}

template <typename A>
string to_string(A v) {
  bool first = true;
  string res = "{";
  for (const auto &x : v) {
    if (!first) {
      res += ", ";
    }
    first = false;
    res += to_string(x);
  }
  res += "}";
  return res;
}

template <typename A, typename B>
string to_string(pair<A, B> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}

template <typename A, typename B, typename C>
string to_string(tuple<A, B, C> p) {
  return "(" + to_string(get<0>(p)) + ", " + to_string(get<1>(p)) + ", " + to_string(get<2>(p)) + ")";
}

template <typename A, typename B, typename C, typename D>
string to_string(tuple<A, B, C, D> p) {
  return "(" + to_string(get<0>(p)) + ", " + to_string(get<1>(p)) + ", " + to_string(get<2>(p)) + ", " + to_string(get<3>(p)) + ")";
}

void debug_out() { cerr << '\n'; }

template <typename Head, typename... Tail>
void debug_out(Head H, Tail... T) {
  cerr << " " << to_string(H);
  debug_out(T...);
}

#ifdef LOCAL
#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#else
#define debug(...) 42
#endif
// tourist set end

template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }

#define FOR(i,a,b) for(ll i=(a);i<(b);++i)
#define rep(i,b) FOR(i, 0, b)
#define ALL(v) (v).begin(), (v).end()
#define p(s) cout<<(s)<<'\n'
#define p2(s, t) cout << (s) << " " << (t) << '\n'
#define br() p("")
#define pn(s) cout << (#s) << " " << (s) << '\n'
#define p_yes() p("YES")
#define p_no() p("NO")
#define SZ(x) ((int)(x).size())
#define SORT(A) sort(ALL(A))
#define RSORT(A) sort(ALL(A), greater<ll>())
#define MP make_pair

void no(){p_no(); exit(0);}
void yes(){p_yes(); exit(0);}

const ll mod = 1e9 + 7;
const ll inf = 1e18;
const double PI = acos(-1);

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);

    ll N; 
    cin >> N;

    VI A(N);
    rep(i, N){
      cin >> A[i];
    }
    SORT(A);

    ll ma = 0;
    do{
      ll team_power = 0;
      rep(i, N/2){
        ll a = A[i];
        ll b = A[i+N/2];
        team_power ^= (a+b);
      }
      chmax(ma, team_power);
      reverse(A.begin()+N/2,A.end()); // 後半半分をリバースする
    }while(next_permutation(ALL(A)));
    p(ma);
    
    return 0;
}
0