Advertisement
Guest User

Untitled

a guest
Oct 6th, 2015
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. public static class RollerCoaster
  2. {
  3. private static int CountDirhamsEarnedInOneOperation(int numAvailablePlaces, LinkedList<int> numPeopleInEachGroup)
  4. {
  5. //Each passenger pays one dirham to take the ride once.
  6. int dirhamsEarned = 0;
  7. int numGroupsInQueue = numPeopleInEachGroup.Count();
  8.  
  9. while (numPeopleInEachGroup.First() <= numAvailablePlaces && numGroupsInQueue > 0)
  10. {
  11. dirhamsEarned += numPeopleInEachGroup.First();
  12. numAvailablePlaces -= numPeopleInEachGroup.First();
  13. numPeopleInEachGroup.AddLast(numPeopleInEachGroup.First());
  14. numPeopleInEachGroup.RemoveFirst();
  15. numGroupsInQueue--;
  16. }
  17.  
  18. return dirhamsEarned;
  19. }
  20.  
  21. public static long CalculateDirhamsEarned(int numAvailablePlaces, int numOperationsPerDay, LinkedList<int> numPeopleInEachGroup)
  22. {
  23. long dirhamsEarned = 0;
  24.  
  25. while (numOperationsPerDay > 0)
  26. {
  27. dirhamsEarned += (long)CountDirhamsEarnedInOneOperation(numAvailablePlaces, numPeopleInEachGroup);
  28. numOperationsPerDay--;
  29. }
  30.  
  31. return dirhamsEarned;
  32. }
  33. }
  34.  
  35. class Program
  36. {
  37. static void Main(string[] args)
  38. {
  39. 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.");
  40. string[] inputs = Console.ReadLine().Split(' ');
  41.  
  42. int numAvailablePlaces = int.Parse(inputs[0]);
  43. int numOperationsPerDay = int.Parse(inputs[1]);
  44. int numGroupsInQueue = int.Parse(inputs[2]);
  45. LinkedList<int> numPeopleInEachGroup = new LinkedList<int>();
  46.  
  47. Console.WriteLine("Please enter, line by line, the number of people in each group: ");
  48. for (int i = 0; i < numGroupsInQueue; i++)
  49. {
  50. int numPeopleInGroup = int.Parse(Console.ReadLine());
  51. numPeopleInEachGroup.AddLast(numPeopleInGroup);
  52. }
  53.  
  54. long dirhamsEarned = RollerCoaster.CalculateDirhamsEarned(numAvailablePlaces, numOperationsPerDay, numPeopleInEachGroup);
  55. Console.WriteLine(dirhamsEarned.ToString());
  56. }
  57. }
  58.  
  59. string input = "invalid int";
  60. int numAvailablePlaces = 0;
  61.  
  62. while (!int.TryParse(input, out numAvailablePlaces))
  63. {
  64. Console.WriteLine("Please enter a valid integer for the number of places available.");
  65. input = Console.ReadLine();
  66. }
  67.  
  68. private static int CountDirhamsEarnedInOneOperation(int numAvailablePlaces, LinkedList<int> numPeopleInEachGroup)
  69. {
  70. //Each passenger pays one dirham to take the ride once.
  71. int dirhamsEarned = 0;
  72. int numGroupsInQueue = numPeopleInEachGroup.Count();
  73.  
  74. while (numPeopleInEachGroup.First() <= numAvailablePlaces && numGroupsInQueue > 0)
  75. {
  76. dirhamsEarned += numPeopleInEachGroup.First();
  77. numAvailablePlaces -= numPeopleInEachGroup.First();
  78. numPeopleInEachGroup.AddLast(numPeopleInEachGroup.First());
  79. numPeopleInEachGroup.RemoveFirst();
  80. numGroupsInQueue--;
  81. }
  82.  
  83. return dirhamsEarned;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement