#include using namespace std; #define PII pair const int mod=167772161; int arr[2000005]; int W,H; int w(int a, int b) { return a+b*(W+1); } struct point { long long x; long long y; }; long long ccw(point p1, point p2, point p3) { return (p2.x-p1.x)*(p3.y-p1.y)-(p3.x-p1.x)*(p2.y-p1.y); } bool on_seg(point p1, point p2, point p3) { if(p1.x==p2.x) { if(p1.y<=p2.y&&p2.y<=p3.y)return true; if(p1.y>=p2.y&&p2.y>=p3.y)return true; return false; } if(p1.x<=p2.x&&p2.x<=p3.x)return true; if(p1.x>=p2.x&&p2.x>=p3.x)return true; return false; } bool intersect(point p1, point p2, point p3, point p4) { int res=0; long long ccw4=ccw(p1,p2,p3); long long ccw3=ccw(p1,p2,p4); long long ccw2=ccw(p3,p4,p1); long long ccw1=ccw(p3,p4,p2); if(ccw4==0) { if(on_seg(p1,p3,p2))return false; } if(ccw3==0) { if(on_seg(p1,p4,p2))return false; } if(ccw2==0) { if(on_seg(p3,p1,p4))return false; } if(ccw1==0) { if(on_seg(p3,p2,p4))return false; } if(ccw1!=0&&ccw2!=0&&ccw3!=0&&ccw4!=0) { if(ccw1>=0&&ccw2<=0)res=2; else if(ccw1<=0&&ccw2>=0)res=2; if(ccw3>=0&&ccw4<=0)res--; else if(ccw3<=0&&ccw4>=0)res--; } if(res==1)return true; return false; } int main() { ios_base::sync_with_stdio(0); long long Sx,Sy,Ex,Ey; cin>>W>>H>>Sx>>Sy>>Ex>>Ey; double dist=0; double dd=(Sx-Ex)*(Sx-Ex)+(Sy-Ey)*(Sy-Ey); dist+=sqrt(dd); for(int i=0;i>t; arr[w(j,i)]=t, arr[w(j+1,i)]=t, arr[w(j,i+1)]=t, arr[w(j+1,i+1)]=t; } } point S={Sx,Sy}; point E={Ex,Ey}; for(int i=0;i=mi2)dist+=abs(arr[w(i-1,j)]-arr[w(i,j-1)]); else dist+=2*mi2-arr[w(i-1,j)]-arr[w(i,j-1)]; } else if(Sx>i) { int ma1=max(arr[w(i,j)],arr[w(i-1,j-1)]); int mi2=min(arr[w(i-1,j)],arr[w(i,j-1)]); if(ma1>=mi2)dist+=abs(arr[w(i,j)]-arr[w(i-1,j-1)]); else dist+=2*mi2-arr[w(i,j)]-arr[w(i-1,j-1)]; } } } cout.precision(10); cout<