#include #include using namespace std; #define N 52 #define M 16 typedef pair P; char g[M][M]; int w,h; P id2pos[N]; int pos2id[M][M]; int gnum; P gs[3]; int tbl[N*N*N*N]; int dirs[]={-1,0,1,0,0,-1,0,1}; int qh,qt,q[N*N*N*N]; int operator<(P a, P b) { if (a.first!=b.first) return a.first=0;--i) { rs[i]=id2pos[v%N]; v/=N; } me=id2pos[v%N]; } void dump(P me, P rs[]) { printf("%d %d\n",me.first,me.second); for (int y=0;y50) assert(!"too much area!"); if (rnum!=3) assert(!"less percels"); if (gnum!=3) assert(!"less goals"); sort(gs,gs+3); printf("%d\n",solve(enc(start,rs))); } }