東京工業大学プログラミングコンテスト2019 C問題 - XOR Filling

Source

東京工業大学プログラミングコンテスト2019
問題文

問題概要

省略

解法

省略

cLayversion 20190830-1)のコード

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

int N, X, A[5d5];
int arr[5d5], sz;
{
  int i, j, k, n = 0;
  rd(N,X,A(N));
  rep(i,N){
    if(A[i]==-1) arr[sz++] = i;
    else         n ^= A[i];
  }

  if(n==X){
    rep(i,sz) A[arr[i]] = 0;
    wt(A(N));
    return 0;
  }

  if(sz==0) wt(-1), return 0;
  
  if(sz==1){
    i = X ^ n;
    if(i <= X){
      A[arr[0]] = i;
      wt(A(N));
    } else {
      wt(-1);
    }
    return 0;
  }

  while(sz > 2) A[arr[--sz]] = 0;

  i = X ^ n;
  j = 0;
  for(k=30;k>=0;k--) if(i & (1<<k)){
    i ^= (1<<k);
    j ^= (1<<k);
    break;
  }
  if(i > X || j > X) wt(-1), return 0;
  A[arr[0]] = i;
  A[arr[1]] = j;
  wt(A(N));
}

Current time: 2021年09月28日23時59分02秒
Last modified: 2019年09月01日00時50分38秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る

Logged in as: unknown user (not login)

ログイン: