Submission #31596691


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define MOD 1000000007
#define rep(i,a,n) for (ll i=a;i<(ll)n;i++)
#define per(i,a,n) for (ll i=n;i-->(ll)a;)
#define pb push_back

const double pi = acos(-1.0);
const int N = 262144;

vector<int> lr(N*4+10,-1); // -1 unset 0:01, 1:10

int a[N+10];

int n;
bool build(int pos,int val,int idx = 1,int pwr = 0){
  if(pwr == n)return true;
  int direction = pos%2;
  int v = direction != val%2;
  if(lr[idx] != -1 && lr[idx] != v){
    return false;
  }
  lr[idx] = v;
  return build(pos/2,val/2,idx*2+direction,pwr+1);
}

int xorcache[20] = {0}; // 不要实际的xor, 修改代价大

vector<int>ans;

void fix(int val){
  // printf("Fix %d\n",val);
  int x = 0;
  {
    int pwr = n-1;
    int v = val;
    while(pwr--){
      if(v%2 == (lr[v/2] ^ xorcache[pwr])){
        x |= (1<<(pwr));
      }
      v/=2;
    }
  }
  // printf("xor %d\n",x);
  if(x){
    ans.push_back(x);
    rep(pwr,0,n){
      if((1<<pwr) & x)xorcache[pwr]^=1; // 标记
    }
  }
  // printf("+1\n");
  {
    int idx = 1;
    rep(pwr,0,n){
      if(lr[idx]^xorcache[pwr]){
        idx=idx*2;
      }else{
        idx=idx*2+1;
      }
      lr[idx/2] ^= 1;
    }
  }
  ans.push_back(-1);
}


int main(){
  cin>>n;
  rep(i,0,(1<<n)){
    scanf("%d",a+i);
  }
  rep(i,0,(1<<n)){
    int r = build(i,a[i]);
    if(!r){
      printf("No\n");
      return 0;
    }
  }
  // rep(i,1,8){
  //   printf("lr[%lld]= %d\n",i,lr[i]);
  // }
  rep(i,(1<<(n-1)),(1<<n)){
    if(lr[i] == 0)continue;
    fix(i);
  }
  int x = 0;
  rep(pwr,0,n){
    if(lr[1<<pwr] ^ xorcache[pwr]){
      x |= 1<<pwr;
      xorcache[pwr] ^= 1;
    }
  }
  if(x){
    ans.push_back(x);
  }
  rep(pwr,0,n){
    rep(i,(1<<pwr),(1<<(pwr+1))){
      if(lr[i]^xorcache[pwr]){
        printf("No\n");
        return 0;
      }
    }
  }
  printf("Yes\n");
  printf("%d\n",(int)ans.size());
  rep(i,0,(int)ans.size()){
    printf("%d ",ans[i]);
  }
  printf("\n");
  return 0;
}

Submission Info

Submission Time
Task C - Increment or Xor
User cromarmot
Language C++ (GCC 9.2.1)
Score 1100
Code Size 1982 Byte
Status AC
Exec Time 82 ms
Memory 9512 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:72:10: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   72 |     scanf("%d",a+i);
      |     ~~~~~^~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1100 / 1100
Status
AC × 3
AC × 63
Set Name Test Cases
Sample 01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt
All 01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt, 02_small_Yes_01.txt, 02_small_Yes_02.txt, 02_small_Yes_03.txt, 02_small_Yes_04.txt, 02_small_Yes_05.txt, 02_small_Yes_06.txt, 02_small_Yes_07.txt, 02_small_Yes_08.txt, 02_small_Yes_09.txt, 02_small_Yes_10.txt, 03_max_Yes_1_01.txt, 03_max_Yes_1_02.txt, 03_max_Yes_1_03.txt, 03_max_Yes_1_04.txt, 03_max_Yes_1_05.txt, 03_max_Yes_1_06.txt, 03_max_Yes_1_07.txt, 03_max_Yes_1_08.txt, 03_max_Yes_1_09.txt, 03_max_Yes_1_10.txt, 04_max_Yes_2_01.txt, 04_max_Yes_2_02.txt, 04_max_Yes_2_03.txt, 04_max_Yes_2_04.txt, 04_max_Yes_2_05.txt, 04_max_Yes_2_06.txt, 04_max_Yes_2_07.txt, 04_max_Yes_2_08.txt, 04_max_Yes_2_09.txt, 04_max_Yes_2_10.txt, 05_rand_trie_01.txt, 05_rand_trie_02.txt, 05_rand_trie_03.txt, 05_rand_trie_04.txt, 05_rand_trie_05.txt, 05_rand_trie_06.txt, 05_rand_trie_07.txt, 05_rand_trie_08.txt, 05_rand_trie_09.txt, 05_rand_trie_10.txt, 05_rand_trie_11.txt, 05_rand_trie_12.txt, 05_rand_trie_13.txt, 05_rand_trie_14.txt, 05_rand_trie_15.txt, 05_rand_trie_16.txt, 05_rand_trie_17.txt, 05_rand_trie_18.txt, 06_near_Yes_01.txt, 06_near_Yes_02.txt, 06_near_Yes_03.txt, 06_near_Yes_04.txt, 06_near_Yes_05.txt, 06_near_Yes_06.txt, 06_near_Yes_07.txt, 06_near_Yes_08.txt, 06_near_Yes_09.txt, 06_near_Yes_10.txt, 07_handmade_01.txt, 07_handmade_02.txt
Case Name Status Exec Time Memory
01_sample_01.txt AC 10 ms 7240 KiB
01_sample_02.txt AC 6 ms 7244 KiB
01_sample_03.txt AC 6 ms 7192 KiB
02_small_Yes_01.txt AC 7 ms 7228 KiB
02_small_Yes_02.txt AC 12 ms 7164 KiB
02_small_Yes_03.txt AC 6 ms 7280 KiB
02_small_Yes_04.txt AC 9 ms 7232 KiB
02_small_Yes_05.txt AC 6 ms 7384 KiB
02_small_Yes_06.txt AC 6 ms 7208 KiB
02_small_Yes_07.txt AC 4 ms 7276 KiB
02_small_Yes_08.txt AC 7 ms 7340 KiB
02_small_Yes_09.txt AC 10 ms 7232 KiB
02_small_Yes_10.txt AC 10 ms 7248 KiB
03_max_Yes_1_01.txt AC 65 ms 8992 KiB
03_max_Yes_1_02.txt AC 66 ms 9360 KiB
03_max_Yes_1_03.txt AC 67 ms 9372 KiB
03_max_Yes_1_04.txt AC 65 ms 9364 KiB
03_max_Yes_1_05.txt AC 65 ms 9420 KiB
03_max_Yes_1_06.txt AC 64 ms 9364 KiB
03_max_Yes_1_07.txt AC 66 ms 9264 KiB
03_max_Yes_1_08.txt AC 63 ms 8928 KiB
03_max_Yes_1_09.txt AC 66 ms 9368 KiB
03_max_Yes_1_10.txt AC 64 ms 9268 KiB
04_max_Yes_2_01.txt AC 46 ms 8568 KiB
04_max_Yes_2_02.txt AC 45 ms 8636 KiB
04_max_Yes_2_03.txt AC 80 ms 9400 KiB
04_max_Yes_2_04.txt AC 47 ms 8196 KiB
04_max_Yes_2_05.txt AC 47 ms 8220 KiB
04_max_Yes_2_06.txt AC 79 ms 9368 KiB
04_max_Yes_2_07.txt AC 46 ms 8192 KiB
04_max_Yes_2_08.txt AC 80 ms 9368 KiB
04_max_Yes_2_09.txt AC 46 ms 8516 KiB
04_max_Yes_2_10.txt AC 82 ms 9512 KiB
05_rand_trie_01.txt AC 8 ms 7236 KiB
05_rand_trie_02.txt AC 6 ms 7204 KiB
05_rand_trie_03.txt AC 4 ms 7136 KiB
05_rand_trie_04.txt AC 6 ms 7276 KiB
05_rand_trie_05.txt AC 6 ms 7164 KiB
05_rand_trie_06.txt AC 9 ms 7308 KiB
05_rand_trie_07.txt AC 11 ms 7276 KiB
05_rand_trie_08.txt AC 11 ms 7152 KiB
05_rand_trie_09.txt AC 7 ms 7164 KiB
05_rand_trie_10.txt AC 6 ms 7252 KiB
05_rand_trie_11.txt AC 8 ms 7248 KiB
05_rand_trie_12.txt AC 8 ms 7276 KiB
05_rand_trie_13.txt AC 10 ms 7512 KiB
05_rand_trie_14.txt AC 13 ms 7652 KiB
05_rand_trie_15.txt AC 14 ms 7684 KiB
05_rand_trie_16.txt AC 20 ms 8144 KiB
05_rand_trie_17.txt AC 35 ms 8596 KiB
05_rand_trie_18.txt AC 58 ms 9360 KiB
06_near_Yes_01.txt AC 38 ms 8188 KiB
06_near_Yes_02.txt AC 40 ms 8168 KiB
06_near_Yes_03.txt AC 37 ms 8640 KiB
06_near_Yes_04.txt AC 41 ms 8220 KiB
06_near_Yes_05.txt AC 35 ms 8272 KiB
06_near_Yes_06.txt AC 38 ms 8268 KiB
06_near_Yes_07.txt AC 43 ms 8248 KiB
06_near_Yes_08.txt AC 45 ms 8204 KiB
06_near_Yes_09.txt AC 38 ms 8204 KiB
06_near_Yes_10.txt AC 37 ms 8636 KiB
07_handmade_01.txt AC 48 ms 8268 KiB
07_handmade_02.txt AC 78 ms 9344 KiB