#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const long long INF = LLONG_MAX / 2; const int MAX = 1000000000; long long getVal(const vector& coef, int x) { double tmp = 0.0; for(int i=coef.size()-1; i>=0; --i){ tmp *= x; tmp += coef[i]; } if(tmp < -INF) return -INF; if(tmp > INF) return INF; long long ans = 0; for(int i=coef.size()-1; i>=0; --i){ ans *= x; ans += coef[i]; } return ans; } int main() { vector coef(4); coef[3] = 1; for(int i=2; i>=0; --i) cin >> coef[i]; int left = -MAX; int right = MAX; while(left < right){ int mid = (left + right + 1) / 2; long long tmp = getVal(coef, mid); if(tmp <= 0) left = mid; else right = mid - 1; } vector ans(1, left); long double a = coef[2] + (long double)ans[0]; long double b = -coef[0] / (long double)ans[0]; long double tmp = max(0.0l, a*a - 4*b); long double x1 = (-a - sqrt(tmp)) / 2; long double x2 = (-a + sqrt(tmp)) / 2; ans.push_back((int) round(x1)); ans.push_back((int) round(x2)); sort(ans.begin(), ans.end()); cout << ans[0]; for(int i=1; i<3; ++i) cout << ' ' << ans[i]; cout << endl; return 0; }