int encode(int n,int x,int y) {
int h=-1;
for (int p=0;p<=9;p++) {
int a=((1<<p)&x),b=((1<<p)&y);
if (a==(1<<p) && b!=(1<<p)) {
h=p+1; break;
}
}
if (h==-1) {
int pa=__builtin_popcount(x),pb=__builtin_popcount(y);
for (int p=0;p<=4;p++) {
int a=((1<<p)&pa),b=((1<<p)&pb);
if (a!=(1<<p) && b==(1<<p)) {
h=11+p; break;
}
}
}
return h;
}
int decode(int n,int q,int h) {
h--;
if (h>=10) {
h-=10;
int k=__builtin_popcount(q);
if (((1<<h)&k)!=(1<<h)) return 1;
else return 0;
}
else {
if (((1<<h)&q)!=(1<<h)) return 0;
else return 1;
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
2894 ms |
24032 KB |
Output is partially correct - maxh = 14 |
2 |
Partially correct |
2926 ms |
24228 KB |
Output is partially correct - maxh = 14 |