#include #include #include #include using namespace std; typedef pair Rider; constexpr int FULL_DISTANCE = 4500 * 3.6; int ride_time(const Rider& rider, const int distance = FULL_DISTANCE) { return static_cast(ceil(static_cast(distance) / rider.first)) + rider.second; } int start_pos(const Rider& rider) { if (rider.second >= 0) { return 0; } return rider.first * -rider.second; } int arrival_time(const vector& riders, const int distance = FULL_DISTANCE) { vector early_riders, late_riders; for (const auto& rider : riders) { if (rider.second >= 0) { late_riders.push_back(rider); } else { // early_riders.push_back(rider); } } double min_time = ride_time(*min_element( late_riders.begin(), late_riders.end(), [distance](const Rider& a, const Rider& b) { return ride_time(a, distance) < ride_time(b, distance); })); clog << "min_time: " << min_time << endl; // for (const auto& rider : early_riders) { // if (-rider.second > min_time) { continue; } // min_time = min(min_time, ride_time(rider, distance)); // } return static_cast(ceil(min_time)); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int rider_count; while (cin >> rider_count && rider_count) { vector riders(rider_count); for (int i = 0; i < rider_count; i++) { cin >> riders[i].first >> riders[i].second; // riders[i].first /= 3.6; } cout << arrival_time(riders) << endl; } return 0; }