fork download
  1. #include<bits/stdc++.h>
  2. #define int long long
  3. #define maxn 1300005
  4. #define ll long long
  5. using namespace std;
  6. int sub[maxn][25];
  7. int super[maxn][25];
  8. int n,a[maxn];
  9. int cnt[maxn];
  10. signed main() {
  11. cin>>n;
  12. for(int i=1;i<=n;i++){
  13. cin>>a[i];
  14. cnt[a[i]]++;
  15. }
  16. for(int i=0;i<20;i++){
  17. for(int mask=0;mask<(1<<20);mask++){
  18. if(mask&(1<<i)){
  19. sub[mask][i]=(i==0 ? cnt[mask]+cnt[mask^(1<<i)] : sub[mask][i-1]+sub[mask^(1<<i)][i-1]);
  20. }
  21. else{
  22. sub[mask][i]=(i==0 ? cnt[mask] : sub[mask][i-1]);
  23. }
  24. }
  25. }
  26. for(int i=0;i<20;i++){
  27. for(int mask=0;mask<(1<<20);mask++){
  28. if((mask&(1<<i))==0){
  29. super[mask][i]=(i==0 ? cnt[mask]+cnt[mask | (1<<i)] : super[mask][i-1]+super[mask | (1<<i)][i-1]);
  30. }
  31. else{
  32. super[mask][i]=(i==0 ? cnt[mask] : super[mask][i-1]);
  33. }
  34. }
  35. }
  36. for(int i=1;i<=n;i++){
  37. int x= a[i];
  38. cout<<sub[x][19]<<' '<<super[x][19]<<' '<<n-sub[((1<<20)-1)^x][19]<<'\n';
  39. }
  40. return 0;
  41. }
  42.  
Success #stdin #stdout 0.67s 413792KB
stdin
Standard input is empty
stdout
Standard output is empty