📖 Scenario: Imagine a small train station where trains arrive and depart at different times. We want to find out the minimum number of platforms needed so that no train has to wait.
🎯 Goal: You will write a program to find the minimum number of platforms required for the trains based on their arrival and departure times.
📋 What You'll Learn
Create two arrays called arrivals and departures with exact train times
Create an integer variable called n for the number of trains
Write a function called minPlatforms that takes arrivals, departures, and n as input and returns the minimum number of platforms needed
Print the result using printf
💡 Why This Matters
🌍 Real World
Train stations and airports use this logic to manage platforms and gates efficiently to avoid delays.
💼 Career
Understanding scheduling and resource allocation algorithms is important for software engineers working on transportation, logistics, and event management systems.
Progress0 / 4 steps
1
Create train arrival and departure arrays
Create two integer arrays called arrivals and departures with these exact values: arrivals = {900, 940, 950, 1100, 1500, 1800} and departures = {910, 1200, 1120, 1130, 1900, 2000}. Also create an integer variable called n and set it to 6.
DSA C
Hint
Use int arrivals[] = {...}; and int departures[] = {...}; to create the arrays. Set n to 6.
2
Declare the minPlatforms function
Declare a function called minPlatforms that takes three parameters: two integer arrays arrivals and departures, and an integer n. The function should return an integer.
DSA C
Hint
Write the function declaration with the correct parameters and return type.
3
Implement the minPlatforms function logic
Implement the minPlatforms function to calculate the minimum number of platforms needed. Use sorting for arrivals and departures, then use two pointers to count platforms needed. Return the maximum platforms required.
DSA C
Hint
Sort both arrays. Use two indexes i and j to traverse arrivals and departures. Increase platform count if arrival is before or equal to departure, else decrease. Track max platforms.
4
Print the minimum number of platforms
Call the minPlatforms function with arrivals, departures, and n. Store the result in an integer variable called result. Then print Minimum number of platforms needed: followed by result using printf.
DSA C
Hint
Call minPlatforms(arrivals, departures, n), store in result, then print with printf.
Practice
(1/5)
1. What does the problem "Minimum Number of Platforms" ask you to find given train arrival and departure times?
easy
A. The earliest train arrival time
B. The minimum number of platforms needed so no train waits
C. The total number of trains arriving in a day
D. The maximum number of trains arriving at the same time
Solution
Step 1: Understand the problem goal
The problem asks for the minimum number of platforms required so that no train has to wait for another to leave.
Step 2: Clarify what is being counted
We count how many trains overlap in time, which determines how many platforms are needed simultaneously.
Final Answer:
The minimum number of platforms needed so no train waits -> Option B
Quick Check:
Minimum platforms = max trains overlapping [OK]
Hint: Count overlapping trains to find minimum platforms needed [OK]
Common Mistakes:
Confusing total trains with platforms needed
Ignoring overlapping times
Counting only arrivals or departures
2. Which of the following C code snippets correctly declares arrays for train arrival and departure times for 5 trains?
easy
A. int arrival[5] = {900, 940, 950, 1100, 1500}; int departure[5] = {910, 1200, 1120, 1130, 1900};
B. int arrival = {900, 940, 950, 1100, 1500}; int departure = {910, 1200, 1120, 1130, 1900};
C. int arrival[5] = (900, 940, 950, 1100, 1500); int departure[5] = (910, 1200, 1120, 1130, 1900);
D. int arrival[] = 900, 940, 950, 1100, 1500; int departure[] = 910, 1200, 1120, 1130, 1900;
Solution
Step 1: Check array declaration syntax in C
Arrays must be declared with size or empty brackets and initialized with curly braces {}.
Step 2: Validate each option
int arrival[5] = {900, 940, 950, 1100, 1500}; int departure[5] = {910, 1200, 1120, 1130, 1900}; uses correct syntax with size and braces. Others use incorrect syntax like parentheses or missing braces.
Final Answer:
int arrival[5] = {900, 940, 950, 1100, 1500}; int departure[5] = {910, 1200, 1120, 1130, 1900}; -> Option A
Quick Check:
Arrays use {} with size or empty brackets [OK]
Hint: Use curly braces {} to initialize arrays in C [OK]
Common Mistakes:
Using parentheses () instead of braces {}
Missing array size or empty brackets
Assigning values without braces
3. Given arrival times {900, 940, 950, 1100, 1500} and departure times {910, 1200, 1120, 1130, 1900}, what is the minimum number of platforms needed? Consider the following code snippet:
int arrival[] = {900, 940, 950, 1100, 1500};
int departure[] = {910, 1200, 1120, 1130, 1900};
int n = 5;
// Assume arrays are sorted
int i = 1, j = 0, platforms = 1, result = 1;
while (i < n && j < n) {
if (arrival[i] <= departure[j]) {
platforms++;
i++;
if (platforms > result) result = platforms;
} else {
platforms--;
j++;
}
}
printf("%d", result);
medium
A. 4
B. 2
C. 1
D. 3
Solution
Step 1: Trace the platform count with given times
Starts platforms=1 (900 arrival), i=1, j=0. 940 <= 910? No, so platforms--, j=1. Then 940 <= 1200: platforms++, i=2. 950 <= 1200: platforms++, i=3. 1100 <= 1200: platforms++, i=4 (max=3). Later departures reduce platforms.
Step 2: Find max platforms during iteration
Maximum platforms reached is 3 (trains 940-1200, 950-1120, 1100-1130 overlap).
Final Answer:
3 -> Option D
Quick Check:
Max overlapping trains = 3 [OK]
Hint: Sort times and count overlaps to find max platforms [OK]
Common Mistakes:
Not sorting arrival and departure arrays
Incorrectly incrementing or decrementing platform count
Confusing <= with < in comparisons
4. Identify the error in the following code snippet for calculating minimum platforms:
int arrival[] = {900, 940, 950, 1100, 1500};
int departure[] = {910, 1200, 1120, 1130, 1900};
int n = 5;
int i = 0, j = 0, platforms = 0, result = 0;
while (i < n && j < n) {
if (arrival[i] < departure[j]) {
platforms++;
i++;
if (platforms > result) result = platforms;
} else {
platforms--;
j++;
}
}
printf("%d", result);
medium
A. No error, code is correct
B. Initialization of platforms should start at 1
C. Loop condition should be i <= n && j <= n
D. Comparison should be arrival[i] <= departure[j]
Using arrival[i] <= departure[j] (overcounts on equal times)
Initializing platforms=1 with i=0 (overcounts first arrival)
Loop i <= n && j <= n (off-by-one)
5. You have arrival times {900, 940, 950, 1100, 1500, 1800} and departure times {910, 1200, 1120, 1130, 1900, 2000}. How would you modify the algorithm to handle trains arriving and departing at the same time (e.g., arrival[i] == departure[j]) to minimize platforms needed?
hard
A. Ignore trains with equal arrival and departure times
B. Treat arrival[i] == departure[j] as arrival first to allocate platform
C. Treat arrival[i] == departure[j] as departure first to free platform
D. Increase platform count by 2 when times are equal
Solution
Step 1: Understand impact of equal arrival and departure times
If a train departs at the same time another arrives, the platform can be reused without adding a new one.
Step 2: Adjust comparison logic
When arrival[i] == departure[j], count departure first to free platform before arrival increments platform count.
Final Answer:
Treat arrival[i] == departure[j] as departure first to free platform -> Option C
Quick Check:
Departure before arrival frees platform [OK]
Hint: Count departures before arrivals when times are equal [OK]
Common Mistakes:
Counting arrival before departure causing extra platform
Ignoring equal times leading to wrong count
Adding platforms unnecessarily
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.