Advertisement
a53

pow2

a53
Oct 22nd, 2017
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define H 100003
  3. using namespace std;
  4.  
  5. vector<pair<int,int>> T[H];
  6. int n,i,x[H],p[32],c,v,w,j,h,C;
  7. long long sol;
  8.  
  9. int main()
  10. {
  11. cin>>n;
  12. for(i=1;i<=n;++i)
  13. cin>>x[i];
  14. sort(x+1,x+n+1);
  15. p[0]=1;
  16. for(i=1;i<=31;++i)
  17. p[i]=2*p[i-1];
  18. for(i=n;i;)
  19. {
  20. v=x[i];c=0;
  21. while(x[i]==v)
  22. --i,++c;
  23. if(v==(v&(-v)))
  24. sol+=1LL*c*(c-1)/2;
  25. for(j=31;;--j)
  26. {
  27. w=p[j]-v;
  28. if(w<=v)
  29. break;
  30. h=w%H;
  31. C=0;
  32. vector<pair<int,int>>::iterator it;
  33. for(it=T[h].begin();it!=T[h].end();++it)
  34. if(it->first==w)
  35. {
  36. C=it->second;
  37. break;
  38. }
  39. sol+=1LL*c*C;
  40. }
  41. h=v%H;
  42. T[h].push_back(make_pair(v,c));
  43. }
  44. cout<<sol;
  45. return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement