Submission #1023458

#TimeUsernameProblemLanguageResultExecution timeMemory
1023458NintsiChkhaidzeXOR Sum (info1cup17_xorsum)C++17
11 / 100
224 ms30548 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]; int 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]; int ans=0,add=0; for (int i = 0; i < 12; i++){ // for (int j = 1; j <= n; j++){ // b[j] = {(a[j] & ((1LL<<(i + 1)) - 1)),j}; // } // sort(b+1,b+n+1); // for (int j = 1; j <= n; j++) // cout<<b[j].s<<" "; // cout<<endl; int idx = 0; for (int j = 1; j <= n; j++){ int bb = ((arr[j] >> i) & 1); if (!bb) b[++idx] = arr[j]; } for (int j = 1; j <= n; j++){ int bb = ((arr[j] >> i) & 1); if (bb) b[++idx] = arr[j]; } for (int j = 1; j <= n; j++) arr[j] = b[j]; for (int j = 1; j <= n; j++) b[j] = (arr[j] & ((1LL<<(i + 1)) - 1)); int cnt = 0; int r0 = 0,r1 = 0,r2 = 0; for (int j = n; j >= 1; j--){ while (r0 + 1 <= n && (((b[j] + b[r0 + 1]) >> i) & 3) <= 0) r0++; while (r1 + 1 <= n && (((b[j] + b[r1 + 1]) >> i) & 3) <= 1) r1++; while (r2 + 1 <= n && (((b[j] + b[r2 + 1]) >> 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:31:13: warning: unused variable 'add' [-Wunused-variable]
   31 |   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...