Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <queue>#include<stdlib.h>using namespace std;#define ll long long intbool isvalid = true;ll move(ll a,int i,int j){switch(j){case 1:if(((a >> (18-6*i))&0x7) > 5 || ((a >> (18-6*i+3))&0x7) < 1 )isvalid = false;else a+= (2 << (18-6*i)) - (1 << (18-6*i+3));break;case 2:if(((a >> (18-6*i))&0x7) > 5 || ((a >> (18-6*i+3))&0x7) > 6 )isvalid = false;else a+= (2 << (18-6*i)) + (1 << (18-6*i+3));break;case 3:if(((a >> (18-6*i))&0x7) > 6 || ((a >> (18-6*i+3))&0x7) > 5 )isvalid = false;else a+= (1 << (18-6*i)) + (2 << (18-6*i+3));break;case 4:if(((a >> (18-6*i))&0x7) < 1 || ((a >> (18-6*i+3))&0x7) > 5 )isvalid = false;else a+= -(1 << (18-6*i)) + (2 << (18-6*i+3));break;case 5: