結果

問題 No.1456 Range Xor
ユーザー forest3
提出日時 2021-07-21 12:53:58
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 198 ms / 2,000 ms
コード長 561 bytes
コンパイル時間 1,852 ms
コンパイル使用メモリ 177,288 KB
実行使用メモリ 13,440 KB
最終ジャッジ日時 2024-07-17 13:57:20
合計ジャッジ時間 8,332 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 46
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int N, K;
	cin >> N >> K;
	vector<int> A( N );
	string ans = "No";
	for( int i = 0; i < N; i++ ) {
		cin >> A[i];
		if( A[i] == K ) ans = "Yes";
	}

	if( ans == "No" ) {
		vector<int> acc( N + 1 );
		map<int, int> mp;
		for( int i = 0; i < N; i++ ) {
			acc[i + 1] = acc[i] ^ A[i];
			if( acc[i + 1] == K ) ans = "Yes";
			mp[ acc[i + 1] ]++;
		}
		if( ans == "No" ) {
			for( int i = 1; i < N; i++ ) {
				mp[ acc[i] ]--;
				if( mp[ acc[i] ^ K ] ) ans = "Yes";
			}
		}
	}

	cout << ans << endl;
}
0