**Problem:**

In one pass, **Train A** can start from the source station at time **T[0]**, halt at each station for **h **unit of time until it reaches the last station at time **T[N – 1]**, where **N** is the positive integer representing a total number of stations.

Given, **Train A’s** timings at each unit of time as **T[] = {10.00, 10.04, 10.09, 10.15, 10.19, 10.22}**.

Now, suppose Railway Admin wants to add more trains to increase the frequency. So, to launch other **Train B**, for the same stations as of **Train A’s**. Provided the **Train B** starts at time **t**, they would like to know the timings for **Train B**. The program should return a String array **S **(timestamp(in float) for **Train B** at each station from first to the last station like **train A**).

**Note:**

- The time is represented in 24-Hour.
- Start Hour should be in the range
**[0, 23]**. - Start Minute should be in the range
**[0, 59]**. - Enter start time(24 Hrs)

**Examples:**

Input:t = 11.00Output:11.00 11.04 11.09 11.15 11.19 11.22Explanation:Start time for train B is 11.00 and also the time difference between the stations for train B is same as for train A.

Input:t = -26.15Output:Invalid InputExplanation:No such time as -26.15 exists. Hence, print “Invalid Input”.

**Approach:** The idea is to calculate the time differences between the stations from the given timings of Train A. Follow the steps below to solve the problem:

- From the given array
**T[]**, generate an array**train_B[]**where**train_B[i]**is the time difference between**T[i]**and**T[i – 1]**, where**train_B[0] = 0.00**and**1 ≤ i ≤ 5.** - Therefore,
**train_B[] = {0.00, 0.04, 0.05, 0.06, 0.04, 0.03}**. - If the integer part of
**t**is not in the range**[0, 24]**or the decimal part of**t**is not in the range**[0, 60]**, then print**“Invalid Input”**because the integer part represents the hours and the decimal part represents the minutes. - Otherwise, traverse over the range
**[0, 5]**and print**t + train_B[i]**denoting the time for**train B**for the**i**station. Then update t as^{th}**t = t + train_B[i]**.

Below is the implementation of the above approach:

## C

`// C program for the above approach ` ` ` `#include <stdio.h> ` `#include <string.h> ` ` ` `// Function to find the timings for ` `// train B having same time difference ` `// as train_A ` `void` `findTime(` `float` `train_A[], ` `int` `N, ` ` ` `float` `t) ` `{ ` ` ` `float` `x; ` ` ` ` ` `// Stores the time for train_B ` ` ` `float` `train_B[N]; ` ` ` `train_B[0] = 0.00; ` ` ` ` ` `for` `(` `int` `i = 1; i < N; i++) { ` ` ` `train_B[i] = train_A[i] ` ` ` `- train_A[i - 1]; ` ` ` `} ` ` ` ` ` `// Variables for typecasting ` ` ` `int` `it, ix; ` ` ` `it = (` `int` `)t; ` ` ` ` ` `// Check if t is valid ` ` ` `if` `(t >= 0.0 && t <= 24.0 ` ` ` `&& (t - it) <= 60.0) { ` ` ` ` ` `// Traverse from 0 to 5 ` ` ` `for` `(` `int` `i = 0; i < 6; i++) { ` ` ` ` ` `// Update t ` ` ` `x = t + train_B[i]; ` ` ` `ix = (` `int` `)x; ` ` ` ` ` `if` `(x - ix >= 0.60) ` ` ` `x = x + 0.40; ` ` ` `if` `(x > 24.00) ` ` ` `x = x - 24.0; ` ` ` ` ` `// Print the current time ` ` ` `printf` `(` `"%.2f "` `, x); ` ` ` `t = x; ` ` ` `} ` ` ` `} ` ` ` ` ` `// If no answer exist ` ` ` `else` `{ ` ` ` `printf` `(` `"Invalid Input"` `); ` ` ` `} ` `} ` ` ` `// Driver Code ` `int` `main() ` `{ ` ` ` `// Given timings of train A ` ` ` `// at each station ` ` ` `float` `train_A[] ` ` ` `= { 10.00, 10.04, 10.09, ` ` ` `10.15, 10.19, 10.22 }; ` ` ` ` ` `int` `N = ` `sizeof` `(train_A) ` ` ` `/ ` `sizeof` `(train_A[0]); ` ` ` ` ` `// Given start time t ` ` ` `float` `t = 11.00; ` ` ` ` ` `// Function Call ` ` ` `findTime(train_A, N, t); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

**Output:**

11.00 11.04 11.09 11.15 11.19 11.22

**Time Complexity:** O(1)**Auxiliary Space:** O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.