結果

問題 No.183 たのしい排他的論理和(EASY)
ユーザー KoshStormKoshStorm
提出日時 2017-12-17 23:03:31
言語 C++14
(gcc 13.2.0 + boost 1.83.0)
結果
RE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,347 bytes
コンパイル時間 2,632 ms
コンパイル使用メモリ 170,768 KB
実行使用メモリ 4,380 KB
最終ジャッジ日時 2023-08-24 20:21:49
合計ジャッジ時間 6,008 ms
ジャッジサーバーID
(参考情報)
judge13 / judge15
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: 関数 ‘int main()’ 内:
main.cpp:19:17: 警告: ‘N’ is used uninitialized [-Wuninitialized]
   19 |         Vl A(N,0);
      |                 ^
main.cpp:18:15: 備考: ‘N’ はここで宣言されています
   18 |         short N;
      |               ^

ソースコード

diff #

#include <bits/stdc++.h>
#define REP(i,n) for (int i=0;i<(n);i++)
#define FOR(i,a,b) for (int i=(a);i<(b);i++)
#define dump(x)  cerr << #x << " => " << (x) << endl;
#define dump1d_arr(array,i) cerr << #array << "[" << (i) << "] ==> " << (array[i]) << endl;
#define dump2d_arr(array,i,j) cerr << #array << "[" << (i) << "]" << "[" << (j) << "] ==> " << (array[i][j]) << endl;
#define loINF (long)10000000000
#define shINF (short)10000
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define CLR(a) memset((a), 0 ,sizeof(a))
using namespace std;

typedef vector<long> Vl;
typedef vector<short> VS;

int main(void){
	short N;
	Vl A(N,0);
	long tmpmax = 0;
	long maxval = 0;
	short iter = 0;

	cin >> N;

	REP(i,N){
		cin >> A[i];
		tmpmax = MAX(A[i],tmpmax);
	}

	#ifdef DEBUG
		REP(i,N) dump1d_arr(A,i);
	#endif

	
	while(tmpmax > maxval){
		maxval += (1 << (iter++));
	}

	#ifdef DEBUG
		dump(maxval);
	#endif

	VS initdp(maxval+1,0);
	VS dp_tmp(maxval+1,0);
	VS dp(maxval+1,0);
	dp[0] = 1;

	REP(i,N){
		dp_tmp = initdp;
		REP(j,maxval+1){
			#ifdef DEBUG
				dump(i);
				dump(j);
			#endif

			if (dp[j]){
				dp_tmp[j^(A[i])] = 1;
				dp_tmp[j] = 1;
			}
		}
		dp = dp_tmp;
	}

	#ifdef DEBUG
		REP(i,dp.size()) dump1d_arr(dp,i);
	#endif //(DEBUG)

	cout << count(dp.begin(),dp.end(),1) << endl;

	return 0;
}
0