Beispiel #1
0
        public static IEnumerable <double> Tribonacci(double[] signature)
        {
            foreach (var n in signature)
            {
                yield return(n);
            }

            var buffer = new Queue <double>(signature);

            while (true)
            {
                var next = buffer.Sum();
                yield return(next);

                buffer.Dequeue();
                buffer.Enqueue(next);
            }
        }
        static void Main(string[] args)
        {
            int capacity = int.Parse(Console.ReadLine());

            var numbersAndLetters = Console.ReadLine().Split().Reverse();

            Queue <string> elements = new Queue <string>();

            Queue <int> guests = new Queue <int>();

            foreach (var element in numbersAndLetters)
            {
                if (char.IsLetter(element[0]))
                {
                    elements.Enqueue(element);
                }
                else
                {
                    int guest = int.Parse(element);

                    while (elements.Count > 0)
                    {
                        if (guests.Sum() + guest <= capacity)
                        {
                            guests.Enqueue(guest);
                            break;
                        }
                        else
                        {
                            Console.WriteLine($"{elements.Dequeue()} -> {string.Join(", ",guests)}");
                        }
                        guests.Clear();
                    }
                }
            }
        }