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 |