#include #define show(x) cerr << #x << " = " << x << endl using namespace std; using ll = long long; using pii = pair; using vi = vector; template ostream& operator<<(ostream& os, const vector& v) { os << "sz=" << v.size() << "\n["; for (const auto& p : v) { os << p << ","; } os << "]\n"; return os; } template ostream& operator<<(ostream& os, const pair& p) { os << "(" << p.first << "," << p.second << ")"; return os; } constexpr ll MOD = 1e9 + 7; template constexpr T INF = numeric_limits::max() / 100; using ld = long double; // 3xx+2ax+b -> x=(-a+-sqrt(aa-3b))/3 ll A, B, C; constexpr ld eps = 1e-9; pair stationary() { const ld rt = sqrt((long double)A * A - 3 * B); pair p; p.first = (-A + rt) / 3; p.second = (-A - rt) / 3; return p; } ld bin(ld inf, ld sup, bool rising) { while (sup - inf > eps) { const ld mid = (inf + sup) / 2; const ld calc = mid * mid * mid + A * mid * mid + B * mid + C; if (rising) { if (calc > 0) { sup = mid; } else { inf = mid; } } else { if (calc < 0) { sup = mid; } else { inf = mid; } } } return inf; } int main() { cin.tie(0); ios::sync_with_stdio(false); cin >> A >> B >> C; const pair p = stationary(); const ld point[4] = {-A - 2 * p.first, p.second, p.first, -A - 2 * p.second}; ll ans[3]; for (int i = 0; i < 3; i++) { ans[i] = (ll)round(bin(point[i], point[i + 1], (i % 2 == 0))); } cout << ans[0] << " " << ans[1] << " " << ans[2] << endl; return 0; }