Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- namespace PowerPlants
- {
- public class PPlants
- {
- static void Main(string[] args)
- {
- int[] plantsLevel = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
- int[] days = new int[2];
- FullSeason(plantsLevel, days);
- AfterSeasonAlive(plantsLevel);
- ExtraDays(plantsLevel, days);
- string seasonText = days[1] == 1 ? "season" : "seasons";
- Console.WriteLine($"survived {days[0]} days ({days[1]} {seasonText})");
- }
- public static void FullSeason(int[] plantsLevel, int[] days)
- {
- for (int i = 0; i < plantsLevel.Length; i++)
- {
- AddDay(plantsLevel, days);
- PlantPower(i, plantsLevel);
- }
- AddSeason(plantsLevel, days);
- }
- public static void PlantPower(int i, int[] plantsLevel)
- {
- for (int k = 0; k < plantsLevel.Length; k++)
- {
- if (k == i)
- {
- continue;
- }
- plantsLevel[k] = plantsLevel[k] <= 0 ? 0 : plantsLevel[k] - 1;
- }
- }
- public static void AfterSeasonAlive(int[] plantsLevel)
- {
- for (int i = 0; i < plantsLevel.Length; i++)
- {
- plantsLevel[i] = plantsLevel[i] > 0 ? plantsLevel[i] + 1 : plantsLevel[i];
- }
- }
- public static void ExtraDays(int[] plantsLevel, int[] days)
- {
- while (true)
- {
- FullSeason(plantsLevel, days);
- int sumExtraDays = 0;
- for (int i = 0; i < plantsLevel.Length; i++)
- {
- sumExtraDays = plantsLevel[i] > 0 ? sumExtraDays + plantsLevel[i] : sumExtraDays;
- }
- if (sumExtraDays == 0)
- {
- break;
- }
- AfterSeasonAlive(plantsLevel);
- }
- }
- public static void AddDay(int[] plantsLevel, int[] days)
- {
- for (int i = 0; i < plantsLevel.Length; i++)
- {
- if (plantsLevel[i] > 0)
- {
- days[0] += 1;
- return;
- }
- }
- }
- public static void AddSeason(int[] plantsLevel, int[] days)
- {
- for (int i = 0; i < plantsLevel.Length; i++)
- {
- if (plantsLevel[i] > 0)
- {
- days[1] += 1;
- return;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement