// Wrongri-La Shower #include typedef long long ll; const double EPS = 1e-9; int X, Y, R; // -std=c++1y //double minimum(auto f){ template double minimum(F f){ double lb = -252521.0, ub = 252521.0; for(int i=0;i<100;i++){ double c1 = 1. * (lb * 2 + ub) / 3, c2 = 1. * (lb + ub * 2) / 3; if(f(c1) < f(c2)){ub = c2;} else{lb = c1;} } return f(lb); } bool can(int k){ if(minimum([&k](double x){ double a = x - X, b = x + Y - k; return a * a + b * b - R * R; }) < EPS){ return false; } if(minimum([&k](double x){ double a = x - X, b = x - Y + k; return a * a + b * b - R * R; }) < EPS){ return false; } if(minimum([&k](double x){ double a = x - X, b = x - Y - k; return a * a + b * b - R * R; }) < EPS){ return false; } if(minimum([&k](double x){ double a = x - X, b = x + Y + k; return a * a + b * b - R * R; }) < EPS){ return false; } return true; } int main(){ scanf("%d %d %d", &X, &Y, &R); int lb = X + Y, ub = 252521; while(ub - lb > 1){ int mid = (lb+ub) / 2; if(can(mid)){ ub = mid; }else{ lb = mid; } } printf("%d\n", ub); }