結果

問題 No.184 たのしい排他的論理和(HARD)
ユーザー y_mazun
提出日時 2015-04-17 00:06:32
言語 C++11
(gcc 4.8.5)
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 707 Byte
コンパイル時間 181 ms
使用メモリ 8,912 KB
最終ジャッジ日時 2019-07-30 14:10:59

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
00_sample01.in AC 2 ms
6,868 KB
00_sample02.in AC 2 ms
6,872 KB
00_sample03.in AC 2 ms
8,912 KB
10_random_small01.in AC 2 ms
6,868 KB
10_random_small02.in AC 2 ms
6,872 KB
10_random_small03.in AC 3 ms
6,872 KB
10_random_small04.in AC 3 ms
6,868 KB
10_random_small05.in AC 2 ms
6,868 KB
20_random_large01.in AC 36 ms
6,868 KB
20_random_large02.in AC 10 ms
6,872 KB
20_random_large03.in AC 29 ms
6,868 KB
20_random_large04.in AC 21 ms
6,872 KB
20_random_large05.in AC 42 ms
6,868 KB
20_random_large06.in AC 44 ms
6,872 KB
20_random_large07.in AC 27 ms
6,868 KB
20_random_large08.in AC 48 ms
6,872 KB
20_random_large09.in AC 39 ms
6,868 KB
20_random_large10.in AC 43 ms
6,872 KB
30_corner01.in AC 3 ms
6,868 KB
30_corner02.in AC 3 ms
6,868 KB
30_corner03.in AC 15 ms
6,872 KB
30_corner04.in AC 49 ms
6,872 KB
30_corner05.in AC 50 ms
6,868 KB
40_random_small01.in AC 2 ms
6,872 KB
40_random_small02.in AC 2 ms
6,868 KB
40_random_small03.in AC 2 ms
6,872 KB
40_random_small04.in AC 2 ms
6,872 KB
40_random_small05.in AC 2 ms
6,872 KB
50_random_large01.in WA -
50_random_large02.in WA -
50_random_large03.in WA -
50_random_large04.in WA -
50_random_large05.in WA -
system_test1.txt AC 48 ms
6,868 KB
system_test2.txt AC 47 ms
6,872 KB
system_test3.txt AC 49 ms
6,872 KB
system_test4.txt AC 50 ms
6,872 KB
テストケース一括ダウンロード

ソースコード

diff #
#include <queue>
typedef long long ll;

#define REP(i,n) for(int i=0; i<(int)(n); i++)

#include <cstdio>
inline int getInt(){ int s; scanf("%d", &s); return s; }

#include <set>

using namespace std;

/*
y1 = x00 * x0 + x10 * x1 + ... + xn0 * xn
y2 = x01 * x0 + x11 * x1 + ... + xn1 * xn
...
yk = x0k * x0 + x1k * x1 + ... + xnk * xn

 */

int main(){
  const int n = getInt();
  vector<ll> a(n);
  REP(i,n) scanf("%lld", &a[i]);

  ll ans = 1;
  REP(i,62){
    int p = 0;
    for(; p < n; p++)
      if(a[p] & (1ll << i))
        break;
    if(p == n) continue;
    ans *= 2;

    REP(j,n) if(a[j] & (1ll << i)){
      a[j] = (a[j] ^ a[p]) | (1ll << i);
    }
  }

  printf("%lld\n", ans);

  return 0;
}
0