int pp[10001],cnt=0;
int encode (int n, int x, int y) {
if (!cnt)
for (int i=0;i<(1<<12);++i)
if (__builtin_popcount(i) == 6)pp[cnt++]=i;
x = pp[x-1];
y = pp[y-1];
for (int i=0;i<12;++i){
if (((x>>i)&1) && !((y>>i)&1) )return i+1;
}
return 0;
}
int pp[10001],cnt=0;
int decode (int n, int q, int h) {
if (!cnt){
for (int i=0;i<(1<<12);++i)
if (__builtin_popcount(i) == 6)pp[cnt++]=i;
}
q = pp[q-1];
return ((q>>(h-1))&1);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5051 ms |
24512 KB |
Output is correct - maxh = 12 |
2 |
Correct |
4675 ms |
24452 KB |
Output is correct - maxh = 12 |