Submission #521956

#TimeUsernameProblemLanguageResultExecution timeMemory
521956boykutXOR Sum (info1cup17_xorsum)C++14
18 / 100
1682 ms14144 KiB
#include <bits/stdc++.h> using namespace std ; long long t[10000001]; void push(int v, int vl, int vr) { } void update(int l, int r, int x, int v, int vl, int vr) { } 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++) { if ((cnt[i] * (cnt[i] - 1) / 2 + cnt[i]) & 1) x ^= (i + i); if (cnt[i] & 1) { for (int j = 0; j < i; j++) { if (cnt[j] & 1) x ^= (i + j); } } } cout << x << '\n'; } else if (*max_element(a, a + n) <= 1000000) { 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++) { if ((cnt[i] * (cnt[i] - 1) / 2 + cnt[i]) & 1) x ^= (i + i); } vector<int> v; for (int i = 0; i <= N; i++) { if (cnt[i] & 1) v.push_back(i); } for (int i = 0; i < v.size(); i++) { for (int j = 0; j < i; j++) x ^= (v[i] + v[j]); } cout << x << '\n'; } return 0; }

Compilation message (stderr)

xorsum.cpp: In function 'int main()':
xorsum.cpp:61:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |   for (int i = 0; i < v.size(); i++) {
      |                   ~~^~~~~~~~~~
#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...