#include using namespace std; static const double INF = 1e18; static const double EPS = 1e-9; int n; vector x, ylo, yhi; // L(m) = max_i (x_i * m - y_i^+) double L(double m) { double res = -INF; for (int i = 0; i < n; i++) res = max(res, x[i] * m - yhi[i]); return res; } // U(m) = min_i (x_i * m - y_i^-) double U(double m) { double res = INF; for (int i = 0; i < n; i++) res = min(res, x[i] * m - ylo[i]); return res; } // g(m) = L(m) - U(m) (konveksna) double g(double m) { return L(m) - U(m); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n; x.resize(n); ylo.resize(n); yhi.resize(n); for (int i = 0; i < n; i++) { cin >> x[i] >> ylo[i] >> yhi[i]; } // Opseg za m (nagib) double lo = -1e6, hi = 1e6; // Ternarna pretraga for (int it = 0; it < 200; it++) { double m1 = lo + (hi - lo) / 3.0; double m2 = hi - (hi - lo) / 3.0; if (g(m1) < g(m2)) hi = m2; else lo = m1; } double m = (lo + hi) / 2.0; double Lm = L(m); double Um = U(m); if (Lm <= Um + EPS) { double Y = Lm; // bilo šta iz [L(m), U(m)] double c = -Y; // jer je Y = -c u dualu cout << "YES\n"; cout << fixed << setprecision(10); cout << "m = " << m << "\n"; cout << "c = " << c << "\n"; cout << "line: y = " << m << "x + " << c << "\n"; } else { cout << "NO\n"; } return 0; }