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 |
|
|
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 |