이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
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;
map<int, int> nrm;
for(int i = 1; i <= n; i++){
int val = v[i]%mod;
nrm[val+1] = i;
int l = (1<<k), r = (1<<(k+1))-1;
l = (l-val+mod)%mod;
r = (r-val+mod)%mod;
if(l <= r){
nrm[r+1] = nrm[l] = i;
}else{
nrm[r+1] = nrm[l] = nrm[mod] = i;
}
}
int cnt = 0;
for(auto &it: nrm){
it.second = ++cnt;
}
FenwickTree aib(cnt);
for(int i = 1; i <= n; i++){
int val = v[i]%mod;
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 += aib.query(nrm[mod]) - 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 < 20; i++){
ans += (cnt(i)&1)*(1<<i);
}
cout << ans;
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
xorsum.cpp: In function 'bool inauntru(int, pii)':
xorsum.cpp:49:10: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
49 | auto [l, r] = interv;
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |