int@h,@w,@n,@(a,b,c,d)[n]; DijkstraHeap<int>p; p.malloc(n+2,1); p.change(n+1,0); while(1){ int i=p.pop(); int v=p.val[i]; if(i==n){ wt(v); exit(0); } int x=i<n?c[i]:1; int y=i<n?d[i]:1; rep(j,n){ p.change(j,v+1+abs(a[j]-x)+abs(b[j]-y)); } p.change(n,v+abs(h-x)+abs(w-y)); }