AtCoder Beginner Contest #117 D問題 - XXOR

Source

AtCoder Beginner Contest #117
問題文

問題概要

省略

解法

省略

cLayversion 20190715-1)のコード

C++に変換後のコードはこちら

int N, bt[40][2];
ll A, K;
{
  int i, j, k;
  ll res, cur, tmp;

  rd(N,K);
  rep(N){
    rd(A);
    rep(i,40) bt[i][ if[A&1LL<<i,1,0] ]++;
  }

  res = cur = 0;
  for(i=39;i>=0;i--){
    if(K & 1LL<<i){
      tmp = cur;
      tmp += ((ll)bt[i][1]) << i;
      for(j=i-1;j>=0;j--) tmp += ((ll)max(bt[j][0],bt[j][1])) << j;
      res >?= tmp;

      cur += ((ll)bt[i][0]) << i;
    } else {
      cur += ((ll)bt[i][1]) << i;
    }
  }
  res >?= cur;
  wt(res);
}

Current time: 2021年09月18日04時49分59秒
Last modified: 2019年07月19日02時18分26秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder AtCoder_Beginner_Contest ABC117 ABC_D
トップページに戻る

Logged in as: unknown user (not login)

ログイン: