IPetrov007

03_IncreasingCrisis

Feb 26th, 2017
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace _04_IncreasingCrisis
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. List<int> result = new List<int>();
  14. int N = int.Parse(Console.ReadLine());
  15. bool isTheLast;
  16. for (int i = 0; i < N; i++)
  17. {
  18. int[] numbers = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
  19.  
  20. if (result.Count == 0)
  21. {
  22. AddFisrtNumbers(result, numbers);
  23. }
  24. else
  25. {
  26. for (int j = result.Count - 1; j > 0; j--)
  27. {
  28. int firstNumber = numbers[0];
  29.  
  30. if (firstNumber < result[0])
  31. {
  32. isTheLast = false;
  33. result.Insert(0, firstNumber);
  34. InsertElements(result, numbers, j, isTheLast);
  35. break;
  36.  
  37. }
  38. else if (firstNumber >= result[j - 1] && firstNumber < result[j])
  39. {
  40. isTheLast = false;
  41. result.Insert(j, firstNumber);
  42. InsertElements(result, numbers, j, isTheLast);
  43. break;
  44. }
  45. else if (firstNumber >= result[result.Count - 1])
  46. {
  47. isTheLast = true;
  48. result.Insert(result.Count, numbers[0]);
  49. InsertElements(result, numbers, j, isTheLast);
  50. break;
  51. }
  52.  
  53. }
  54. }
  55. }
  56. Console.WriteLine(string.Join(" ", result));
  57. }
  58.  
  59. private static void AddFisrtNumbers(List<int> result, int[] numbers)
  60. {
  61. result.Add(numbers[0]);
  62. for (int k = 1; k < numbers.Length; k++)
  63. {
  64. if (IsTheNextIsBigger(numbers[k - 1], numbers[k]))
  65. {
  66. result.Add(numbers[k]);
  67. }
  68. else
  69. {
  70. break;
  71. }
  72. }
  73. }
  74.  
  75. private static void InsertElements(List<int> result, int[] numbers, int j, bool isTheLast)
  76. {
  77. for (int l = 1; l < numbers.Length; l++)
  78. {
  79. if (numbers[l] >= numbers[l - 1])
  80. {
  81. result.Insert(j + 1 + l, numbers[l]);
  82. }
  83. else if (isTheLast)
  84. {
  85. break;
  86. }
  87. else
  88. {
  89. RemoveElements(result, j, l);
  90. break;
  91. }
  92. }
  93. }
  94.  
  95. private static void RemoveElements(List<int> result, int j, int l)
  96. {
  97. int elementsToRemove = result.Count - (j + l);
  98. result.RemoveRange(j + l, elementsToRemove);
  99. }
  100.  
  101. private static bool IsTheNextIsBigger(int a, int b)
  102. {
  103. if (a > b)
  104. {
  105. return false;
  106. }
  107. else
  108. {
  109. return true;
  110. }
  111. }
  112. }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment