3
vector<double> getCollisionTimes(vector<vector<int>> &cars) {5
vector<double> res(n, -1.0);6
stack<int> st; // for storing indices7
for (int i = n - 1; i >= 0; i--) {8
// traversing from back if someone has greater speed and ahead of lesser9
// speed car it will always be ahead10
while (!st.empty() && cars[st.top()][1] >= cars[i][1]) st.pop();11
while (!st.empty()) // for lesser speed car ahead of greater spped car13
double collision_time =14
(double)(cars[st.top()][0] - cars[i][0]) / (cars[i][1] - cars[st.top()][1]);15
if (collision_time <= res[st.top()] || res[st.top()] == -1) {16
res[i] = collision_time;