#include <iostream>
#include <cmath>
using namespace std;
double z(double x, double y, double &z0){
z0=-1; //<-- место для ввода слагаемых функции f(x, y) не под корнем чётной степени.
return (2-x*x-y*y)<0? z0:sqrt(2-x*x-y*y)+z0;//<-- место для ввода функции z=f(x, y).
}
long double dl(double x, double y, double z){
return sqrt(x*x+y*y+z*z);//Длина вектора.
}
double ras(double xi, double xj, double yi, double yj){
double zii, zjj, zij, zji, v1x=0, v1y=0, v1z=0, v2x=0, v2y=0, v2z=0, z0=0;
zii=z(xi, yi, z0); //Найдём координату z каждой вершины треугольников.
zjj=z(xj, yj, z0);
zij=z(xi, yj, z0);
zji=z(xj, yi, z0);
if(z(xi, yi, z0)!=z0||z(xi, yj, z0)!=z0||z(xj, yi, z0)!=z0){//Используем функцию z(), потому что z0 может оказаться переменной.
v1x=(yj-yi)*(zji-zii); //Вычислим векторное произведение векторов.
v1y=(zij-zii)*(xj-xi);
v1z=(yi-yj)*(xj-xi);
}
if(z(xj, yj, z0)!=z0||z(xi, yj, z0)!=z0||z(xj, yi, z0)!=z0){
v2x=(yi-yj)*(zji-zjj);
v2y=(zij-zjj)*(xi-xj);
v2z=(yj-yi)*(xi-xj);
}
return (dl(v1x, v1y, v1z)+dl(v2x, v2y, v2z))/2;//Найдём площадь треугольников.
}
int main(){
double xi, xj, yi, yj, s=0, h, z0=0;
int a, b, c, d;
cin >> a >> b >> c >> d >> h;
xi = a;
while(xi<=(b-h)){
yi=c;
xj=xi+h;
while(yi<=(d-h)){
yj=yi+h;
s+=ras(xi, xj, yi, yj);
yi=yj;
}
xi=xj;
}
cout<<s;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgeihkb3VibGUgeCwgIGRvdWJsZSB5LCAgZG91YmxlICZ6MCl7Cgl6MD0tMTsgLy88LS0g0LzQtdGB0YLQviDQtNC70Y8g0LLQstC+0LTQsCDRgdC70LDQs9Cw0LXQvNGL0YUg0YTRg9C90LrRhtC40LggZih4LCB5KSDQvdC1INC/0L7QtCDQutC+0YDQvdC10Lwg0YfRkdGC0L3QvtC5INGB0YLQtdC/0LXQvdC4LgoJcmV0dXJuICgyLXgqeC15KnkpPDA/IHowOnNxcnQoMi14KngteSp5KSt6MDsvLzwtLSDQvNC10YHRgtC+INC00LvRjyDQstCy0L7QtNCwINGE0YPQvdC60YbQuNC4IHo9Zih4LCB5KS4KfQpsb25nIGRvdWJsZSAgZGwoZG91YmxlIHgsICBkb3VibGUgeSwgIGRvdWJsZSB6KXsKCXJldHVybiBzcXJ0KHgqeCt5Knkreip6KTsvL9CU0LvQuNC90LAg0LLQtdC60YLQvtGA0LAuCn0KZG91YmxlIHJhcyhkb3VibGUgeGksICBkb3VibGUgeGosICBkb3VibGUgeWksICBkb3VibGUgeWopewoJZG91YmxlIHppaSwgIHpqaiwgIHppaiwgIHpqaSwgIHYxeD0wLCAgdjF5PTAsICB2MXo9MCwgIHYyeD0wLCAgdjJ5PTAsICB2Mno9MCwgIHowPTA7Cgl6aWk9eih4aSwgIHlpLCAgejApOyAvL9Cd0LDQudC00ZHQvCDQutC+0L7RgNC00LjQvdCw0YLRgyB6INC60LDQttC00L7QuSDQstC10YDRiNC40L3RiyDRgtGA0LXRg9Cz0L7Qu9GM0L3QuNC60L7Qsi4KCXpqaj16KHhqLCAgeWosICB6MCk7Cgl6aWo9eih4aSwgIHlqLCAgejApOwoJemppPXooeGosICB5aSwgIHowKTsKCWlmKHooeGksICB5aSwgIHowKSE9ejB8fHooeGksICB5aiwgIHowKSE9ejB8fHooeGosICB5aSwgIHowKSE9ejApey8v0JjRgdC/0L7Qu9GM0LfRg9C10Lwg0YTRg9C90LrRhtC40Y4geigpLCAg0L/QvtGC0L7QvNGDINGH0YLQviB6MCDQvNC+0LbQtdGCINC+0LrQsNC30LDRgtGM0YHRjyDQv9C10YDQtdC80LXQvdC90L7QuS4KCQl2MXg9KHlqLXlpKSooemppLXppaSk7ICAvL9CS0YvRh9C40YHQu9C40Lwg0LLQtdC60YLQvtGA0L3QvtC1INC/0YDQvtC40LfQstC10LTQtdC90LjQtSDQstC10LrRgtC+0YDQvtCyLgoJCXYxeT0oemlqLXppaSkqKHhqLXhpKTsKCQl2MXo9KHlpLXlqKSooeGoteGkpOwoJfQoJaWYoeih4aiwgIHlqLCAgejApIT16MHx8eih4aSwgIHlqLCAgejApIT16MHx8eih4aiwgIHlpLCAgejApIT16MCl7CgkJdjJ4PSh5aS15aikqKHpqaS16amopOwoJCXYyeT0oemlqLXpqaikqKHhpLXhqKTsKCQl2Mno9KHlqLXlpKSooeGkteGopOwoJfQoJcmV0dXJuIChkbCh2MXgsICB2MXksICB2MXopK2RsKHYyeCwgIHYyeSwgIHYyeikpLzI7Ly/QndCw0LnQtNGR0Lwg0L/Qu9C+0YnQsNC00Ywg0YLRgNC10YPQs9C+0LvRjNC90LjQutC+0LIuCn0KCmludCBtYWluKCl7Cglkb3VibGUgeGksICB4aiwgIHlpLCAgeWosICBzPTAsICBoLCAgejA9MDsKCWludCBhLCAgYiwgIGMsICBkOwoJY2luID4+IGEgPj4gYiA+PiBjID4+IGQgPj4gaDsKCXhpID0gYTsKCXdoaWxlKHhpPD0oYi1oKSl7CgkJeWk9YzsKCQl4aj14aStoOwoJCXdoaWxlKHlpPD0oZC1oKSl7CgkJCXlqPXlpK2g7CgkJCXMrPXJhcyh4aSwgeGosIHlpLCB5aik7CgkJCXlpPXlqOwoJCX0KCQl4aT14ajsKCX0KCWNvdXQ8PHM7CglyZXR1cm4gMDsKfQ==