Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace winecraft1
- {
- class Program
- {
- static void Main(string[] args)
- {
- var numbers = Console.ReadLine().
- Split(new char[] { ' '},StringSplitOptions.RemoveEmptyEntries).
- Select(int.Parse).
- ToList();
- var n = int.Parse(Console.ReadLine());
- var addingGreatGrapes = new List<int>();
- var countDeadNumbers = 0;
- while (numbers.Count-countDeadNumbers >= n)
- {
- for (int j = 0; j < n; j++)
- {
- IncreaseNumbers(numbers);
- for (int i = 1; i < numbers.Count-1; i++)
- {
- if(SuperGrape(numbers[i-1], numbers[i],numbers[i+1]))
- {
- addingGreatGrapes.Add(i);
- if (numbers[i-1]>0)
- {
- numbers[i]++;
- numbers[i - 1] = numbers[i - 1] - 2;
- }
- if (numbers[i+1]>0)
- {
- numbers[i]++;
- numbers[i + 1] = numbers[i + 1] - 2;
- }
- }
- }
- if (addingGreatGrapes.Count>1)
- {
- IncreaseNumbreIfTwoGreatGrapes(numbers, addingGreatGrapes);
- }
- // Console.WriteLine("Round "+(j+1)+" "+string.Join(" ", numbers));
- addingGreatGrapes.Clear();
- }
- RemoveNumbers(numbers, n);
- countDeadNumbers = CountZeroNumbers(numbers,countDeadNumbers);
- // Console.WriteLine("Round vvvvvvv " + string.Join(" ", numbers));
- }
- RemoveZeroNumbers(numbers);
- Console.WriteLine(string.Join(" ", numbers));
- }
- private static List<int> RemoveZeroNumbers(List<int> numbers)
- {
- for (int i = 0; i < numbers.Count; i++)
- {
- if (numbers[i] == 0)
- {
- numbers.RemoveAt(i);
- i--;
- }
- }
- return numbers;
- }
- private static int CountZeroNumbers(List<int> numbers, int countDeadNumbers)
- {
- countDeadNumbers = 0;
- for (int i = 0; i < numbers.Count; i++)
- {
- if (numbers[i] == 0)
- {
- countDeadNumbers++;
- }
- }
- return countDeadNumbers;
- }
- private static List<int> IncreaseNumbreIfTwoGreatGrapes(List<int> numbers, List<int> k)
- {
- for (int i = 1; i < k.Count; i++)
- {
- if (k[i]-k[i-1]==2)
- {
- var l1 = k[i];
- var l2 = k[i - 1];
- var l = (l1 + l2) / 2;
- if (numbers[l]!=0)
- {
- numbers[l]++;
- }
- }
- }
- return numbers;
- }
- private static List<int> RemoveNumbers(List<int> numbers, int n)
- {
- for (int i = 0; i < numbers.Count; i++)
- {
- if (numbers[i] <= n)
- {
- //numbers.RemoveAt(i);
- //i--;
- numbers[i] = 0;
- }
- }
- return numbers;
- }
- private static bool SuperGrape(int v1, int v2, int v3)
- {
- return (v2 > v1 && v2 > v3);
- }
- private static List<int> IncreaseNumbers(List<int> numbers)
- {
- for (int i = 0; i < numbers.Count; i++)
- {
- if (numbers[i] > 0)
- {
- numbers[i]++;
- }
- }
- return numbers;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement