Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class RollerCoaster
- {
- private static int CountDirhamsEarnedInOneOperation(int numAvailablePlaces, LinkedList<int> numPeopleInEachGroup)
- {
- //Each passenger pays one dirham to take the ride once.
- int dirhamsEarned = 0;
- int numGroupsInQueue = numPeopleInEachGroup.Count();
- while (numPeopleInEachGroup.First() <= numAvailablePlaces && numGroupsInQueue > 0)
- {
- dirhamsEarned += numPeopleInEachGroup.First();
- numAvailablePlaces -= numPeopleInEachGroup.First();
- numPeopleInEachGroup.AddLast(numPeopleInEachGroup.First());
- numPeopleInEachGroup.RemoveFirst();
- numGroupsInQueue--;
- }
- return dirhamsEarned;
- }
- public static long CalculateDirhamsEarned(int numAvailablePlaces, int numOperationsPerDay, LinkedList<int> numPeopleInEachGroup)
- {
- long dirhamsEarned = 0;
- while (numOperationsPerDay > 0)
- {
- dirhamsEarned += (long)CountDirhamsEarnedInOneOperation(numAvailablePlaces, numPeopleInEachGroup);
- numOperationsPerDay--;
- }
- return dirhamsEarned;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Please enter:nThe number of places available;nThe number of times the attraction can function per day;nThe number of groups in the queue.");
- string[] inputs = Console.ReadLine().Split(' ');
- int numAvailablePlaces = int.Parse(inputs[0]);
- int numOperationsPerDay = int.Parse(inputs[1]);
- int numGroupsInQueue = int.Parse(inputs[2]);
- LinkedList<int> numPeopleInEachGroup = new LinkedList<int>();
- Console.WriteLine("Please enter, line by line, the number of people in each group: ");
- for (int i = 0; i < numGroupsInQueue; i++)
- {
- int numPeopleInGroup = int.Parse(Console.ReadLine());
- numPeopleInEachGroup.AddLast(numPeopleInGroup);
- }
- long dirhamsEarned = RollerCoaster.CalculateDirhamsEarned(numAvailablePlaces, numOperationsPerDay, numPeopleInEachGroup);
- Console.WriteLine(dirhamsEarned.ToString());
- }
- }
- string input = "invalid int";
- int numAvailablePlaces = 0;
- while (!int.TryParse(input, out numAvailablePlaces))
- {
- Console.WriteLine("Please enter a valid integer for the number of places available.");
- input = Console.ReadLine();
- }
- private static int CountDirhamsEarnedInOneOperation(int numAvailablePlaces, LinkedList<int> numPeopleInEachGroup)
- {
- //Each passenger pays one dirham to take the ride once.
- int dirhamsEarned = 0;
- int numGroupsInQueue = numPeopleInEachGroup.Count();
- while (numPeopleInEachGroup.First() <= numAvailablePlaces && numGroupsInQueue > 0)
- {
- dirhamsEarned += numPeopleInEachGroup.First();
- numAvailablePlaces -= numPeopleInEachGroup.First();
- numPeopleInEachGroup.AddLast(numPeopleInEachGroup.First());
- numPeopleInEachGroup.RemoveFirst();
- numGroupsInQueue--;
- }
- return dirhamsEarned;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement