Submission #1023447

#TimeUsernameProblemLanguageResultExecution timeMemory
1023447NintsiChkhaidzeXOR Sum (info1cup17_xorsum)C++17
0 / 100
252 ms40284 KiB
#include <bits/stdc++.h> #define pb push_back #define s second #define f first #define pb push_back #define pii pair <int,int> #define ll long long #define left h*2,l,(l + r)/2 #define right h*2+1,(l + r)/2 + 1,r #define int ll using namespace std; const int N = 1e6 + 5; int a[N]; pii arr[N],b[N]; bool fix[N]; signed main() { ios_base::sync_with_stdio(0),cin.tie(NULL),cout.tie(NULL); int n; cin>>n; for (int i = 1; i <= n; i++){ cin >> a[i]; } for (int j = 1; j <= n; j++) arr[j] = {(a[j] & ((1LL<<(0 + 1)) - 1)),j}; sort(arr+1,arr+n+1); int ans=0,add=0; for (int i = 0; i < 12; i++){ /* for (int j = 1; j <= n; j++){ arr[j] = {(a[j] & ((1LL<<(i + 1)) - 1)),j}; } sort(arr+1,arr+n+1);*/ int m = n; for (int j = 1; j <= n; j++){ int bb = ((a[arr[j].s] >> i) & 1); if(bb > 0) fix[j] = 1,arr[++m] = arr[j]; } int idx = 0; for (int j = 1; j <= m; j++){ if (!fix[j]) b[++idx] = arr[j]; } for (int j = 1; j <= n; j++){ int x = b[j].s; arr[j] = {(a[x] & ((1LL<<(i + 1)) - 1)),x}; fix[j] = 0; } int cnt = 0; int r0 = 0,r1 = 0,r2 = 0; for (int j = n; j >= 1; j--){ while (r0 + 1 <= n && (((arr[j].f + arr[r0 + 1].f) >> i) & 3) <= 0) r0++; while (r1 + 1 <= n && (((arr[j].f + arr[r1 + 1].f) >> i) & 3) <= 1) r1++; while (r2 + 1 <= n && (((arr[j].f + arr[r2 + 1].f) >> i) & 3) <= 2) r2++; int l = max(j,r0 + 1),r = r1; cnt += max(0LL,r - l + 1); l = max(j,r2 + 1),r = n; cnt += max(0LL,r - l + 1); } if (cnt & 1) ans |= (1LL<<i); } cout<<ans; }

Compilation message (stderr)

xorsum.cpp: In function 'int main()':
xorsum.cpp:32:13: warning: unused variable 'add' [-Wunused-variable]
   32 |   int ans=0,add=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...