Submission #521809

#TimeUsernameProblemLanguageResultExecution timeMemory
521809boykutXOR Sum (info1cup17_xorsum)C++14
18 / 100
158 ms14756 KiB
#include <bits/stdc++.h>

using namespace std ;

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n;
	cin >> n;
	long long a[n];
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	sort(a, a + n);
	if (n <= 4000) {
		long long x = 0;
		for (int i = 0; i < n; i++) {
			for (int j = 0; j <= i; j++) {
				x ^= (a[i] + a[j]);
			}
		}
		cout << x << '\n';
	} else if (*max_element(a, a + n) <= 4000) {
		int N = *max_element(a, a + n);
		vector<int> cnt(N + 1, 0);
		for (int i = 0; i < n; i++) cnt[a[i]]++;
		long long x = 0;
		for (int i = 0; i <= N; i++) {
			for (int j = i; j <= N; j++) {
				int CNT = (i == j ? cnt[i] * (cnt[i] - 1) / 2 + cnt[i] : cnt[i] * cnt[j]);
				if (CNT % 2 == 1) {
					x ^= (i + j);
				}
			}
		}
		cout << x << '\n';
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...