#include <iostream>
#include <cmath>
using namespace std;
double up = 19.0 + (61.0/125.0);
double down = -32.0 - (2.0/3.0);
double rectangle = (up - down) * 8.0;
double f(double x) {
return (pow(x, 4.0)/500.0) - (pow(x, 2.0)/200.0) - 0.012;
}
double g(double x) {
return -(pow(x, 3.0)/30.0) + (x/20.0) + (1.0/6.0);
}
double area_upper(double x, double step) {
return (((up - f(x)) + (up - f(x + step))) * step) / 2.0;
}
double area_lower(double x, double step) {
return (((g(x) - down) + (g(x + step) - down)) * step) / 2.0;
}
double area(double x, double step) {
return area_upper(x, step) + area_lower(x, step);
}
int main() {
double current = 0, last = 0, step = 1.0;
do {
last = current;
step /= 10.0;
current = 0;
for(double x = 2.0; x < 10.0; x += step) current += area(x, step);
current = rectangle - current;
current = round(current * 1000.0) / 1000.0;
//cout << current - last << endl;
} while( std::fabs(current - last) >= 1e-8);
cout << current << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZG91YmxlIHVwID0gMTkuMCArICg2MS4wLzEyNS4wKTsKZG91YmxlIGRvd24gPSAtMzIuMCAtICgyLjAvMy4wKTsKZG91YmxlIHJlY3RhbmdsZSA9ICh1cCAtIGRvd24pICogOC4wOwoKZG91YmxlIGYoZG91YmxlIHgpIHsKICAgIHJldHVybiAocG93KHgsIDQuMCkvNTAwLjApIC0gKHBvdyh4LCAyLjApLzIwMC4wKSAtIDAuMDEyOwp9Cgpkb3VibGUgZyhkb3VibGUgeCkgewogICAgcmV0dXJuIC0ocG93KHgsIDMuMCkvMzAuMCkgKyAoeC8yMC4wKSArICgxLjAvNi4wKTsKfQoKZG91YmxlIGFyZWFfdXBwZXIoZG91YmxlIHgsIGRvdWJsZSBzdGVwKSB7CiAgICByZXR1cm4gKCgodXAgLSBmKHgpKSArICh1cCAtIGYoeCArIHN0ZXApKSkgKiBzdGVwKSAvIDIuMDsKfQoKZG91YmxlIGFyZWFfbG93ZXIoZG91YmxlIHgsIGRvdWJsZSBzdGVwKSB7CiAgICByZXR1cm4gKCgoZyh4KSAtIGRvd24pICsgKGcoeCArIHN0ZXApIC0gZG93bikpICogc3RlcCkgLyAyLjA7Cn0KCmRvdWJsZSBhcmVhKGRvdWJsZSB4LCBkb3VibGUgc3RlcCkgewogICAgcmV0dXJuIGFyZWFfdXBwZXIoeCwgc3RlcCkgKyBhcmVhX2xvd2VyKHgsIHN0ZXApOwp9CgppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBjdXJyZW50ID0gMCwgbGFzdCA9IDAsIHN0ZXAgPSAxLjA7CgogICAgZG8gewogICAgICAgIGxhc3QgPSBjdXJyZW50OwogICAgICAgIHN0ZXAgLz0gMTAuMDsKICAgICAgICBjdXJyZW50ID0gMDsKCiAgICAgICAgZm9yKGRvdWJsZSB4ID0gMi4wOyB4IDwgMTAuMDsgeCArPSBzdGVwKSBjdXJyZW50ICs9IGFyZWEoeCwgc3RlcCk7CgogICAgICAgIGN1cnJlbnQgPSByZWN0YW5nbGUgLSBjdXJyZW50OwogICAgICAgIGN1cnJlbnQgPSByb3VuZChjdXJyZW50ICogMTAwMC4wKSAvIDEwMDAuMDsKICAgICAgICAvL2NvdXQgPDwgY3VycmVudCAtIGxhc3QgPDwgZW5kbDsKICAgIH0gd2hpbGUoIHN0ZDo6ZmFicyhjdXJyZW50IC0gbGFzdCkgPj0gMWUtOCk7CgogICAgY291dCA8PCBjdXJyZW50IDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQ==