54302023-05-23 16:39:27111Xorzótáblacpp14Elfogadva 100/1001.934s34356 KiB
#include <bits/stdc++.h>
using namespace std;

#define BIT(x, i) ((x) >> (i) & 1)
#define LOPT(i) (~0 ^ ~0 << (i))
 
// az stl-re semmit se lehet bizni...

int cmp(const void* a, const void* b) {
    if (*(int*)a < *(int*)b) {
		return -1;
    }
    else if (*(int*)a > *(int*)b) {
		return 1;
    }
    else {
		return 0;
    }
}

int bs(const vector<int>& v, int x) {
	int l = 0, h = v.size();
	while (l != h) {
		int m = (l + h) / 2;
		if (v[m] >= x) {
			h = m;
		}
		else {
			l = m + 1;
		}
	}
	return h;
}

int main() {
	int AC, BC;
	cin >> AC >> BC;
	vector<int> A(AC), B(BC);
	for (int i = 0; i < AC; i++) {
		cin >> A[i];
	}
	for (int i = 0; i < BC; i++) {
		cin >> B[i];
	}
	vector<vector<int>> v(32);
	vector<vector<int>> w(32);
	int x = 0;
	for (int i = 0; i < 32; i++) {
		for (int j = 0; j < AC; j++) {
			if (BIT(A[j], i)) {
				v[i].push_back(A[j] & LOPT(i));
			}
			else {
				w[i].push_back(A[j] & LOPT(i));
			}
		}
		qsort(v[i].data(), v[i].size(), sizeof(int), cmp);
		qsort(w[i].data(), w[i].size(), sizeof(int), cmp);
	}
	for (int i = 0; i < BC; i++) {
		for (int j = 0; j < 32; j++) {
			int c = 0;
			int y = (1 << j) - (B[i] & LOPT(j));
			if (BIT(B[i], j)) {
				c += w[j].size();
				c += v[j].size() - bs(v[j], y);
				c -= w[j].size() - bs(w[j], y);
			}
			else {
				c += v[j].size();
				c += w[j].size() - bs(w[j], y);
				c -= v[j].size() - bs(v[j], y);
			}
			x ^= c % 2 << j;
		}
	}
	cout << x << endl;
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1808 KiB
2Elfogadva1.597s26604 KiB
subtask214/14
3Elfogadva1.597s26604 KiB
4Elfogadva3ms2092 KiB
5Elfogadva4ms2116 KiB
6Elfogadva6ms2756 KiB
7Elfogadva4ms2548 KiB
8Elfogadva8ms3064 KiB
9Elfogadva9ms3048 KiB
10Elfogadva12ms3464 KiB
subtask314/14
11Elfogadva12ms3464 KiB
12Elfogadva3ms3268 KiB
13Elfogadva1.371s31760 KiB
14Elfogadva1.697s31548 KiB
15Elfogadva1.899s34356 KiB
16Elfogadva1.899s31836 KiB
subtask414/14
17Elfogadva1.899s31836 KiB
18Elfogadva372ms18240 KiB
19Elfogadva560ms30604 KiB
20Elfogadva634ms33096 KiB
21Elfogadva683ms33260 KiB
22Elfogadva697ms33248 KiB
subtask521/21
23Elfogadva697ms33248 KiB
24Elfogadva92ms9896 KiB
25Elfogadva352ms16528 KiB
26Elfogadva524ms31596 KiB
27Elfogadva589ms29248 KiB
28Elfogadva629ms31704 KiB
29Elfogadva340ms31860 KiB
subtask637/37
30Elfogadva340ms31860 KiB
31Elfogadva72ms7748 KiB
32Elfogadva1.088s11304 KiB
33Elfogadva1.22s32140 KiB
34Elfogadva1.411s22048 KiB
35Elfogadva1.902s33132 KiB
36Elfogadva1.934s32592 KiB
37Elfogadva370ms32160 KiB
38Elfogadva1.893s33316 KiB
39Elfogadva1.878s33388 KiB