276092026-05-09 15:21:39LazurAndrasXorzótáblacpp17Elfogadva 100/1001.631s1524 KiB
#include <bits/stdc++.h>
using namespace std;

int mod;

bool cmp(int a, int b)
{
	return (a % mod) < (b % mod);
}

signed main() {
    ios::sync_with_stdio(false);cin.tie(nullptr);
	int n, m; cin >> n >> m;
	vector<int>a(n), b(m);
	vector<bool>cnt_a(31), cnt_b(31);
	for(int &i : a)
	{
		cin >> i;
		for(int j = 0; j <= 30; j++) if((i >> j) & 1) cnt_a[j] = !cnt_a[j];
	}
	for(int &i : b)
	{
		cin >> i;
		for(int j = 0; j <= 30; j++) if((i >> j) & 1) cnt_b[j] = !cnt_b[j];
	}
	int ans = (cnt_a[0] * m + cnt_b[0] * n) % 2;
	for(int i = 1; i <= 30; i++)
	{
		mod = (1 << i);
		sort(a.begin(), a.end(), cmp);
		bool cnt = 0;
		for(int j : b)
		{
			int x = mod - (j % mod);
			int l = -1, r = n;
			while(l < r-1)
			{
				int mid = (l+r) / 2;
				if(a[mid] % mod < x) l = mid;
				else r = mid;
			}
			cnt = cnt ^ ((n-r) % 2);
		}
		ans += ((cnt_a[i] * m + cnt_b[i] * n + cnt) % 2) << i;
	}
	cout << ans;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1.368s1076 KiB
subtask214/14
3Elfogadva1ms508 KiB
4Elfogadva2ms508 KiB
5Elfogadva6ms508 KiB
6Elfogadva3ms316 KiB
7Elfogadva8ms424 KiB
8Elfogadva8ms336 KiB
9Elfogadva12ms316 KiB
subtask314/14
10Elfogadva2ms316 KiB
11Elfogadva1.284s1076 KiB
12Elfogadva1.455s1076 KiB
13Elfogadva1.623s1524 KiB
14Elfogadva1.621s1076 KiB
subtask414/14
15Elfogadva469ms1004 KiB
16Elfogadva666ms1144 KiB
17Elfogadva703ms1100 KiB
18Elfogadva787ms1080 KiB
19Elfogadva801ms1260 KiB
subtask521/21
20Elfogadva119ms756 KiB
21Elfogadva430ms820 KiB
22Elfogadva587ms1044 KiB
23Elfogadva689ms1076 KiB
24Elfogadva732ms1076 KiB
25Elfogadva656ms1076 KiB
subtask637/37
26Elfogadva75ms520 KiB
27Elfogadva901ms820 KiB
28Elfogadva1.192s1012 KiB
29Elfogadva1.184s820 KiB
30Elfogadva1.628s1268 KiB
31Elfogadva1.631s1076 KiB
32Elfogadva722ms1076 KiB
33Elfogadva1.626s1076 KiB
34Elfogadva1.626s1076 KiB