#include "cmp.h"
void remember(int n) {
n = n + 1;
int target = 2048;
int shift = 10;
while (true) {
if (shift == -2) {
bit_set(4096);
break;
}
if (target < n) {
bit_set(target);
target += (1 << shift);
}
else if (target > n) {
bit_set(target);
target -= (1 << shift);
}
else {
bit_set(target);
break;
}
shift--;
}
}
int compare(int b) {
int target = 2048;
int shift = 10;
if (bit_get(target)) {
while (true) {
if (target == 4095) {
if (bit_get(4096)) {
target++;
break;
}
break;
}
if (shift < 0)
break;
if (bit_get(target + (1 << shift)))
target += (1 << shift);
else if (bit_get(target - (1 << shift)))
target -= (1 << shift);
else
break;
shift--;
}
}
if (target - 1> b)
return -1;
else if (target - 1 < b)
return 1;
else
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
5415 ms |
88020 KB |
ZERO POINTS: more than 20 accesses in the worst case |