제출 #129320

#제출 시각아이디문제언어결과실행 시간메모리
129320TAISA_XOR Sum (info1cup17_xorsum)C++14
45 / 100
1671 ms33896 KiB
#include<bits/stdc++.h> using namespace std; using ll=long long; using P=pair<int,int>; int main(){ cin.tie(0); ios::sync_with_stdio(0); int n;cin>>n; vector<ll> a(n); for(int i=0;i<n;i++){ cin>>a[i]; } vector<int> co(30); vector<int> v(n),id(n); for(int i=0;i<n;i++){ id[i]=i; } for(int k=0;k<30;k++){ int j=n-1; vector<int> v0,v1,s(n+1),vi0,vi1; for(int i=1;i<=n;i++){ s[i]=s[i-1]+((a[id[i-1]]>>k)&1); } for(int i=0;i<n;i++){ while(j>=0&&(1<<k)-v[i]<=v[j])--j; if((a[id[i]]>>k)&1){ if(i>j)co[k]+=s[i+1]-s[j+1]; co[k]+=min(i+1,j+1)-s[min(i+1,j+1)]; v1.push_back((1<<k)+v[i]); vi1.push_back(id[i]); }else{ if(i>j)co[k]+=(i-j)-(s[i+1]-s[j+1]); co[k]+=s[min(i+1,j+1)]; v0.push_back(v[i]); vi0.push_back(id[i]); } co[k]&=1; } for(int i=0;i<v0.size();i++){ v[i]=v0[i]; id[i]=vi0[i]; } for(int i=0;i<v1.size();i++){ v[i+v0.size()]=v1[i]; id[i+v0.size()]=vi1[i]; } } int ans=0; for(int k=0;k<30;k++){ if(co[k]){ ans^=(1<<k); } } cout<<ans<<endl; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

xorsum.cpp: In function 'int main()':
xorsum.cpp:39:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<v0.size();i++){
               ~^~~~~~~~~~
xorsum.cpp:43:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<v1.size();i++){
               ~^~~~~~~~~~
#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...