# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
68032 | 2018-08-15T19:33:00 Z | top34051 | XOR Sum (info1cup17_xorsum) | C++17 | 1262 ms | 38544 KB |
#include<bits/stdc++.h> using namespace std; #define X first #define Y second const int maxn = 1e6 + 5; const int mlog = 28; int n; int a[maxn]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); int ans = 0; vector<pair<int,int>> b[2]; for(int i=1;i<=n;i++) b[0].push_back({0,a[i]}); for(int i=0;i<=mlog;i++) { int pw = (1<<i); // printf("pw = %d\n",pw); vector<pair<int,int>> tmp[2]; for(auto t : b[0]) { int x = t.second; tmp[(x/pw)%2].push_back({x%pw,x}); } for(auto t : b[1]) { int x = t.second; tmp[(x/pw)%2].push_back({x%pw,x}); } b[0] = tmp[0]; b[1] = tmp[1]; int sz0 = b[0].size(); int sz1 = b[1].size(); // printf("\t"); // for(auto t : b[0]) printf("%d ",t); // printf("\n"); // printf("\t"); // for(auto t : b[1]) printf("%d ",t); // printf("\n"); int cnt1 = 0, cnt2 = 0, cnt3 = 0; //tx = 0 ty = 0 //2^i <= b[x] + b[y] (< 2^(i+1)) for(int x=0,y=sz0;x<sz0;x++) { while(y-1 >= 0 && pw <= b[0][x].X + b[0][y-1].X) y--; cnt1 += sz0-y; } for(auto t : b[0]) if(pw <= t.X*2) cnt1++; cnt1 /= 2; //tx = 0 ty = 1 //b[x] + b[y] < 2^i for(int x=sz0-1,y=-1;x>=0;x--) { while(y+1 < sz1 && b[0][x].X + b[1][y+1].X < pw) y++; cnt2 += y+1; } //tx = 1 ty = 1 //2^i <= b[x] + b[y] (< 2^(i+1)) for(int x=0,y=sz1;x<sz1;x++) { while(y-1 >= 0 && pw <= b[1][x].X + b[1][y-1].X) y--; cnt3 += sz1-y; } for(auto t : b[1]) if(pw <= t.X*2) cnt3++; cnt3 /= 2; if((cnt1+cnt2+cnt3)&1) ans += pw; } printf("%d",ans); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 380 KB | Output is correct |
2 | Correct | 8 ms | 484 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1110 ms | 35932 KB | Output is correct |
2 | Correct | 851 ms | 35932 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1110 ms | 35932 KB | Output is correct |
2 | Correct | 851 ms | 35932 KB | Output is correct |
3 | Correct | 1006 ms | 36184 KB | Output is correct |
4 | Correct | 1056 ms | 36184 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 380 KB | Output is correct |
2 | Correct | 8 ms | 484 KB | Output is correct |
3 | Correct | 97 ms | 36184 KB | Output is correct |
4 | Correct | 127 ms | 36184 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 380 KB | Output is correct |
2 | Correct | 8 ms | 484 KB | Output is correct |
3 | Correct | 1110 ms | 35932 KB | Output is correct |
4 | Correct | 851 ms | 35932 KB | Output is correct |
5 | Correct | 1006 ms | 36184 KB | Output is correct |
6 | Correct | 1056 ms | 36184 KB | Output is correct |
7 | Correct | 97 ms | 36184 KB | Output is correct |
8 | Correct | 127 ms | 36184 KB | Output is correct |
9 | Correct | 1262 ms | 36360 KB | Output is correct |
10 | Correct | 1139 ms | 36988 KB | Output is correct |
11 | Incorrect | 1153 ms | 38544 KB | Output isn't correct |