제출 #1139600

#제출 시각아이디문제언어결과실행 시간메모리
1139600tkm_algorithmsXOR Sum (info1cup17_xorsum)C++20
0 / 100
99 ms8260 KiB
/**
*    In the name of Allah
*    We are nothing and you're everything
*    author: najmuddin
**/
 
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target("avx2")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("fast-math")
#pragma GCC optimize("trapv")
#pragma GCC optimize("inline")
using namespace std;
 
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
#define int ll
 
const char nl = '\n';
const int N = 1e8+5;
//const int inf = 1e18;
const int mod = 1e9+7;

void solve() {
	int n; cin >> n;
	
	vector<int> a(n);
	for (auto &i: a)cin >> i;
	
	if (n <= 4e3) {
		int total = 0;
	
		for (int i = 0; i < n; ++i) {
			int x = a[i];
			int xorsum = 0;
			for (int j = i; j < n; ++j) {
				xorsum ^= (a[j]+x);
				if (i == 1 && j == 3)cout << xorsum;
			}
			total ^= xorsum;
		}
		cout << total;
		return;
	}
	
	vector<int> v(4e3+10), c;
	for (auto i: a) {
		v[i] += 1;
		if (v[i] == 1)c.push_back(i);
	}
	
	int total = 0;
	
	for (int i = 0; i < sz(c); ++i) {
		//if (v[c[i]] % 2 == 0) {
			//continue;
		//}
		int x = c[i], xorsum = 0;
		for (int j = i; j < sz(c); ++j) {
			//ind2 += 1;
			if (v[c[j]] % 2 == 0)continue;
			xorsum ^= (c[j]+x);
		}
		total ^= xorsum;
	}
	for (auto i: c)
		if (v[i]%2 == 0)total ^= (i+i);
	cout << total;
}
 
int32_t main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
	
	int t = 1;
	//cin >> t;
	
	while (t--) {
		solve();
	}
    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...