Submission #1312792

#TimeUsernameProblemLanguageResultExecution timeMemory
1312792neonglitchXOR Sum (info1cup17_xorsum)C++20
45 / 100
1693 ms33972 KiB
#include <iostream> #include <algorithm> #include <vector> #include <set> #include <map> using namespace std; typedef long long ll; #define int ll const int N=1e6+2; int a[N],c[N],ord[N],n,pw=1; int get(int R) { int i=0,ans=0; // cout<<"We want "<<R<<endl; // cout<<"Array "; // for(int i=0;i<n;i++)cout<<a[ord[i]]%pw<<' '; // cout<<endl; while(i+1<n and (a[ord[i]]%pw)+(a[ord[0]]%pw)<R) { i++; } for(int j=0;j<n;j++) { while(i>=0 and (a[ord[i]]%pw)+(a[ord[j]]%pw)>=R) { i--; } // cout<<"two po "<<j<<' '<<i<<endl; ans+=(i+1); } // cout<<"answer "<<ans<<endl; // int cntp=0; // for(int i=0;i<n;i++) // { // cout<<"For "<<i<<' '; // for(int j=0;j<n;j++) // { // if((a[ord[i]]%pw)+(a[ord[j]]%pw) < R) // { // cout<<j<<' '; // cntp++; // } // } // cout<<endl; // } // cout<<"REAL "<<cntp<<endl; return ans; } main() { // int t=1; // cin>>t; // while(t--) { cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; ord[i]=i; } int fnl=0; for(int j=0;j<32;j++) { pw*=2; vector<int> nxt[2]={}; for(int i=0;i<n;i++) { nxt[((a[ord[i]]>>j)&1)].push_back(ord[i]); } int lpt=0; for(auto x:nxt[0])ord[lpt++]=x; for(auto x:nxt[1])ord[lpt++]=x; // cout<<"At "<<j<<endl;; // for(int i=0;i<n;i++)cout<<ord[i]<<' '<<(a[ord[i]]%pw)<<endl; // get(R) number of pairs with sum < R int on=get(pw)-get(pw/2); // cout<<"fp "<<on<<endl; on += get(2*pw)-get(pw+(pw/2)); // cout<<"sp "<<on<<endl; for(int i=0;i<n;i++) { int x=(a[(ord[i])]%pw)*2; if(x<pw and x>=(pw/2)) { on++; } if(x<2*pw and x>=(pw+(pw/2))) { on++; } } // cout<<"tp "<<on<<endl; on/=2; // cout<<"FNL "<<on<<endl; if(on&1)fnl+=pw/2; } cout<<fnl<<endl; } }

Compilation message (stderr)

xorsum.cpp:49:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   49 | main()
      | ^~~~
#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...