Submission #67710

# Submission time Handle Problem Language Result Execution time Memory
67710 2018-08-15T09:03:49 Z tatatan XOR Sum (info1cup17_xorsum) C++11
100 / 100
1444 ms 48632 KB
#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define LL long long
#define st first
#define nd second
#define endl '\n'
using namespace std;

const int MAXN=1000005;
int n,a[MAXN],b[MAXN],ans;
pii v[MAXN],c[MAXN],d[MAXN];

int main() {

	scanf("%d",&n);
	for(int i=0;i<n;++i) {
		scanf("%d",&a[i]);
		v[i]=mp(0,i);
	}
	for(int i=0;i<30;++i) {
		int t1,t2,t3,ci=0,di=0;
		LL cnt=0;
		for(int j=0;j<n;++j)
			if((1<<i)&(a[v[j].nd]))
				d[di++]=mp(v[j].st+(1<<i),v[j].nd);
			else c[ci++]=v[j];
		for(int j=0;j<ci;++j)
			v[j]=c[j];
		for(int j=0;j<di;++j)
			v[j+ci]=d[j];
		for(int j=0;j<n;++j) 
			b[j]=v[j].st;
		t1=t2=t3=n;
		for(int j=0;j<n;++j) {
			while(t1&&b[t1-1]>=(1<<i)-b[j])
				--t1;
			while(t2&&b[t2-1]>=(1<<(i+1))-b[j])
				--t2;
			while(t3&&b[t3-1]>=(1<<(i+1))+(1<<i)-b[j])
				--t3;
			cnt+=(n-t1-(t3-t2));
		}
		for(int j=0;j<n;++j)
			if((b[j]*2)&(1<<i)) --cnt;
		cnt/=2;		
		for(int j=0;j<n;++j)
			if((b[j]*2)&(1<<i)) ++cnt;		
		if(cnt&1) ans+=(1<<i);
	}
	printf("%d\n",ans);

}

Compilation message

xorsum.cpp: In function 'int main()':
xorsum.cpp:17:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
  ~~~~~^~~~~~~~~
xorsum.cpp:19:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&a[i]);
   ~~~~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 9 ms 504 KB Output is correct
2 Correct 7 ms 616 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 836 ms 29856 KB Output is correct
2 Correct 798 ms 29856 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 836 ms 29856 KB Output is correct
2 Correct 798 ms 29856 KB Output is correct
3 Correct 1075 ms 29856 KB Output is correct
4 Correct 1157 ms 29856 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 9 ms 504 KB Output is correct
2 Correct 7 ms 616 KB Output is correct
3 Correct 139 ms 29856 KB Output is correct
4 Correct 150 ms 29856 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 9 ms 504 KB Output is correct
2 Correct 7 ms 616 KB Output is correct
3 Correct 836 ms 29856 KB Output is correct
4 Correct 798 ms 29856 KB Output is correct
5 Correct 1075 ms 29856 KB Output is correct
6 Correct 1157 ms 29856 KB Output is correct
7 Correct 139 ms 29856 KB Output is correct
8 Correct 150 ms 29856 KB Output is correct
9 Correct 1324 ms 29984 KB Output is correct
10 Correct 1394 ms 39328 KB Output is correct
11 Correct 1444 ms 48632 KB Output is correct