Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long LL;
- const int maxn = 100000 + 100;
- int n;
- LL ans;
- LL num[maxn], bitSum[maxn], cnt[2];
- LL solve(int dig) {
- memset(cnt, 0, sizeof(cnt));
- for (int i = 1; i <= n; ++i) {
- bitSum[i] = bitSum[i - 1] + ((num[i] >> dig) & 1);
- ++cnt[bitSum[i] & 1];
- }
- LL ret = 0;
- for (int i = 1; i <= n; ++i) {
- ret += cnt[(bitSum[i - 1] & 1) ^ 1];
- --cnt[bitSum[i] & 1];
- }
- return ret;
- }
- int main() {
- #ifdef ExRoc
- freopen("test.txt", "r", stdin);
- #endif // ExRoc
- ios::sync_with_stdio(false);
- cin >> n;
- for (int i = 1; i <= n; ++i) {
- cin >> num[i];
- }
- for (int i = 0; i <= 20; ++i) {
- ans += solve(i) << i;
- }
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement