150012025-02-10 21:59:27feheristvanXorzótáblacpp14Időlimit túllépés 49/1002.095s15744 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
1Elfogadva1ms316 KiB
2Elfogadva1.654s12620 KiB
subtask214/14
3Elfogadva1ms508 KiB
4Elfogadva2ms316 KiB
5Elfogadva4ms564 KiB
6Elfogadva2ms316 KiB
7Elfogadva8ms492 KiB
8Elfogadva8ms316 KiB
9Elfogadva10ms580 KiB
subtask30/14
10Elfogadva2ms316 KiB
11Elfogadva1.539s14732 KiB
12Elfogadva1.85s14464 KiB
13Időlimit túllépés2.085s15744 KiB
14Időlimit túllépés2.095s14632 KiB
subtask414/14
15Elfogadva402ms7756 KiB
16Elfogadva625ms13820 KiB
17Elfogadva730ms14984 KiB
18Elfogadva768ms15052 KiB
19Elfogadva794ms15052 KiB
subtask521/21
20Elfogadva101ms3124 KiB
21Elfogadva382ms6420 KiB
22Elfogadva615ms14092 KiB
23Elfogadva667ms12884 KiB
24Elfogadva716ms14104 KiB
25Elfogadva347ms14056 KiB
subtask60/37
26Elfogadva79ms1868 KiB
27Elfogadva1.093s3628 KiB
28Elfogadva1.304s14432 KiB
29Elfogadva1.536s9192 KiB
30Időlimit túllépés2.078s14540 KiB
31Időlimit túllépés2.065s14392 KiB
32Elfogadva388ms14276 KiB
33Elfogadva1.978s14732 KiB
34Időlimit túllépés2.005s14784 KiB