#include #include #include #include #include using namespace std; #define REP(i,n) for(int i = 0; i < (int)(n); i++) #define FOR(i,c) for(__typeof((c).begin()) i = (c).begin(); i != (c).end(); ++i) #define ALLOF(c) (c).begin(), (c).end() #define TICKS 86400 #define EPS 1e-10 int main() { int n; double capacity; while(cin >> n >> capacity && n > 0) { vector schedule(TICKS*2, 0.0); REP(i, n) { int from, to; double use; cin >> from >> to >> use; fill(schedule.begin()+from, schedule.begin()+to, use); } double supply = accumulate(ALLOF(schedule), 0.0) / TICKS; for(;;) { vector simulate(TICKS*2+1); simulate[0] = capacity; int last_full = 0; double augment = 0; REP(t, TICKS*2) { double x = simulate[t+1] = min(capacity, simulate[t] - schedule[t%TICKS] + supply); if (x < 0) augment = max(augment, -x / (t+1 - last_full)); if (x == capacity) last_full = t+1; } if (augment < EPS) break; supply += augment; fprintf(stderr, "augment = %.10f\n", augment); } printf("%.10f\n", supply); } return 0; }