Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 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 winecraft1
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. var numbers = Console.ReadLine().
  14. Split(new char[] { ' '},StringSplitOptions.RemoveEmptyEntries).
  15. Select(int.Parse).
  16. ToList();
  17.  
  18.  
  19. var n = int.Parse(Console.ReadLine());
  20. var addingGreatGrapes = new List<int>();
  21. var countDeadNumbers = 0;
  22. while (numbers.Count-countDeadNumbers >= n)
  23. {
  24.  
  25. for (int j = 0; j < n; j++)
  26. {
  27. IncreaseNumbers(numbers);
  28. for (int i = 1; i < numbers.Count-1; i++)
  29. {
  30. if(SuperGrape(numbers[i-1], numbers[i],numbers[i+1]))
  31. {
  32. addingGreatGrapes.Add(i);
  33. if (numbers[i-1]>0)
  34. {
  35. numbers[i]++;
  36. numbers[i - 1] = numbers[i - 1] - 2;
  37.  
  38. }
  39. if (numbers[i+1]>0)
  40. {
  41. numbers[i]++;
  42. numbers[i + 1] = numbers[i + 1] - 2;
  43.  
  44. }
  45.  
  46. }
  47.  
  48. }
  49.  
  50. if (addingGreatGrapes.Count>1)
  51. {
  52. IncreaseNumbreIfTwoGreatGrapes(numbers, addingGreatGrapes);
  53. }
  54.  
  55. // Console.WriteLine("Round "+(j+1)+" "+string.Join(" ", numbers));
  56. addingGreatGrapes.Clear();
  57.  
  58. }
  59. RemoveNumbers(numbers, n);
  60. countDeadNumbers = CountZeroNumbers(numbers,countDeadNumbers);
  61.  
  62.  
  63. // Console.WriteLine("Round vvvvvvv " + string.Join(" ", numbers));
  64.  
  65. }
  66.  
  67. RemoveZeroNumbers(numbers);
  68. Console.WriteLine(string.Join(" ", numbers));
  69. }
  70.  
  71. private static List<int> RemoveZeroNumbers(List<int> numbers)
  72. {
  73. for (int i = 0; i < numbers.Count; i++)
  74. {
  75. if (numbers[i] == 0)
  76. {
  77. numbers.RemoveAt(i);
  78. i--;
  79.  
  80. }
  81. }
  82.  
  83. return numbers;
  84. }
  85.  
  86. private static int CountZeroNumbers(List<int> numbers, int countDeadNumbers)
  87. {
  88. countDeadNumbers = 0;
  89. for (int i = 0; i < numbers.Count; i++)
  90. {
  91.  
  92. if (numbers[i] == 0)
  93. {
  94. countDeadNumbers++;
  95. }
  96. }
  97. return countDeadNumbers;
  98. }
  99.  
  100. private static List<int> IncreaseNumbreIfTwoGreatGrapes(List<int> numbers, List<int> k)
  101. {
  102. for (int i = 1; i < k.Count; i++)
  103. {
  104. if (k[i]-k[i-1]==2)
  105. {
  106. var l1 = k[i];
  107. var l2 = k[i - 1];
  108. var l = (l1 + l2) / 2;
  109. if (numbers[l]!=0)
  110. {
  111. numbers[l]++;
  112. }
  113.  
  114. }
  115. }
  116. return numbers;
  117. }
  118.  
  119. private static List<int> RemoveNumbers(List<int> numbers, int n)
  120. {
  121. for (int i = 0; i < numbers.Count; i++)
  122. {
  123. if (numbers[i] <= n)
  124. {
  125. //numbers.RemoveAt(i);
  126. //i--;
  127. numbers[i] = 0;
  128. }
  129. }
  130.  
  131. return numbers;
  132. }
  133.  
  134. private static bool SuperGrape(int v1, int v2, int v3)
  135. {
  136. return (v2 > v1 && v2 > v3);
  137. }
  138.  
  139. private static List<int> IncreaseNumbers(List<int> numbers)
  140. {
  141. for (int i = 0; i < numbers.Count; i++)
  142. {
  143. if (numbers[i] > 0)
  144. {
  145. numbers[i]++;
  146. }
  147. }
  148. return numbers;
  149.  
  150. }
  151. }
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement