#include "cmp.h"
int delta[6]={1, 1+(1<<12), 1+(1<<10)+(1<<12), 1+(1<<8)+(1<<10)+(1<<12), 1+(1<<6)+(1<<8)+(1<<10)+(1<<12), 1+(1<<4)+(1<<6)+(1<<8)+(1<<10)+(1<<12)};
void remember(int n) {
for (int i=0; i<6; i++) bit_set((n>>(2*i))+delta[i]);
}
int compare(int b) {
int l=0, r=6;
while (l<r)
{
int md=(l+r)/2;
if (bit_get((b>>(2*md))+delta[md])) r=md;
else l=md+1;
}
if (l==0) return 0;
int left=(b>>((l-1)*2))&3;
if (left>1)
{
if (bit_get(((b>>(l*2))<<2)+3+delta[l-1])) return -1;
else return 1;
}
else
{
if (bit_get(((b>>(l*2))<<2)+delta[l-1])) return 1;
else return -1;
}
}
/*
start(b)
function(b, loc)
{
ans = 0
ans = 1
ans = -1
if (bit_get(loc)) location
else another location
}
start(0)=0
function(0, 0) -> 1 : 0
-> 0 : 1
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |