Submission #918446

#TimeUsernameProblemLanguageResultExecution timeMemory
918446divadXOR Sum (info1cup17_xorsum)C++14
0 / 100
1681 ms18828 KiB
#include <bits/stdc++.h> #pragma GCC optimzie("O3,Ofast") #pragma GCC target("avx2") using namespace std; using pii = pair<int, int>; const int NMAX = 1e6+2; int n,v[NMAX]; struct FenwickTree { int n; vector<int> aib; FenwickTree(int _n){ n = _n; aib.resize(n+1); } void update(int pos, int val){ for(int i = pos; i <= n; i += (i&-i)){ aib[i] += val; } } int query(int pos){ int ans = 0; for(int i = pos; i > 0; i -= (i&-i)){ ans += aib[i]; } return ans; } int query(int l, int r){ return query(r) - query(l-1); } }; int brut(int k){ int ans = 0; int mod = (1<<(k+1)); int l = (1<<k), r = (1<<(k+1))-1; for(int i = 1; i <= n; i++){ for(int j = 1; j <= i; j++){ int sum = (v[i]+v[j])%mod; int bt = (sum>>k)&1; if(bt){ assert(l <= sum && sum <= r); } ans += bt; } } return ans; } bool inauntru(int x, pii interv){ auto [l, r] = interv; return (l <= x && x <= r); } int cnt(int k){ int mod = (1<<(k+1)); int ans = 0, pos = 0; vector<int> vals; vals.resize(3*n); for(int i = 1; i <= n; i++){ int val = v[i]%mod; vals[pos++] = val+1; int l = (1<<k), r = (1<<(k+1))-1; l = (l-val+mod)%mod; r = (r-val+mod)%mod; vals[pos++] = (r+1); vals[pos++] = (l); } sort(vals.begin(), vals.end()); return 0; /*FenwickTree aib(cnt); int sum = 0; for(int i = 1; i <= n; i++){ int val = v[i]%mod; sum++; aib.update(nrm[val+1], 1); int l = (1<<k), r = (1<<(k+1))-1; l = (l-val+mod)%mod; r = (r-val+mod)%mod; if(l <= r){ ans += aib.query(nrm[r+1]) - aib.query(nrm[l]); }else{ ans += aib.query(nrm[r+1]); ans += sum - aib.query(nrm[l]); } } return ans;*/ } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n; for(int i = 1; i <= n; i++){ cin >> v[i]; } int ans = 0; for(int i = 0; i < 30; i++){ ans += (cnt(i)&1)*(1<<i); } cout << ans; return 0; }

Compilation message (stderr)

xorsum.cpp:2: warning: ignoring '#pragma GCC optimzie' [-Wunknown-pragmas]
    2 | #pragma GCC optimzie("O3,Ofast")
      | 
xorsum.cpp: In function 'bool inauntru(int, pii)':
xorsum.cpp:51:10: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   51 |     auto [l, r] = interv;
      |          ^
xorsum.cpp: In function 'int cnt(int)':
xorsum.cpp:57:9: warning: unused variable 'ans' [-Wunused-variable]
   57 |     int ans = 0, pos = 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...