Advertisement
Dimitar_Milenkov

Untitled

Feb 6th, 2023
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.73 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. public class MainClass
  5. {
  6.     public static void Main()
  7.     {
  8.         int numberOfLeaves = int.Parse(Console.ReadLine());
  9.         long[] leaves = new long[numberOfLeaves];
  10.         long[] ladybugsStart = Console.ReadLine().Split(' ').Select(long.Parse).ToArray();
  11.  
  12.         for (int i = 0; i < ladybugsStart.Length; i++)
  13.         {
  14.             if (ladybugsStart[i] >= 0 && ladybugsStart[i] <= numberOfLeaves)
  15.             {
  16.                 leaves[ladybugsStart[i]] = 1;
  17.             }
  18.         }
  19.  
  20.         while (true)
  21.         {
  22.             string[] command = Console.ReadLine().Split();
  23.  
  24.             if (command[0] == "end")
  25.             {
  26.                 break;
  27.             }
  28.  
  29.             long selectedLadybug = long.Parse(command[0]);
  30.             string direction = command[1];
  31.             long flyLength = long.Parse(command[2]);
  32.  
  33.             if (flyLength < 0 && direction == "left")
  34.             {
  35.                 direction = "right";
  36.                 flyLength *= -1;
  37.             }
  38.  
  39.             if (leaves[selectedLadybug] == 1)
  40.             {
  41.                 if (direction == "right")
  42.                 {
  43.                     if (selectedLadybug + flyLength > leaves.Length - 1)
  44.                     {
  45.                         leaves[selectedLadybug] = 0;
  46.                     }
  47.                     else
  48.                     {
  49.                         if (leaves[selectedLadybug + flyLength] == 0)
  50.                         {
  51.                             leaves[selectedLadybug + flyLength] = 1;
  52.                             leaves[selectedLadybug] = 0;
  53.                         }
  54.                         else
  55.                         {
  56.                             long[] smallLeaves1 = new long[leaves.Length - selectedLadybug - 1];
  57.                             Array.Reverse(leaves);
  58.                             Array.Copy(leaves, smallLeaves1, smallLeaves1.Length);
  59.                             Array.Reverse(leaves);
  60.                             Array.Reverse(smallLeaves1);
  61.                             long temp1 = 0;
  62.                             long index = Array.IndexOf(smallLeaves1, temp1);
  63.                             leaves[selectedLadybug + index + 1] = 1;
  64.                             leaves[selectedLadybug] = 0;
  65.                         }
  66.                     }
  67.                 }
  68.                 else if (direction == "left")
  69.                 {
  70.                     if (selectedLadybug - flyLength < 0)
  71.                     {
  72.                         leaves[selectedLadybug] = 0;
  73.                     }
  74.                     else
  75.                     {
  76.                         if (leaves[selectedLadybug - flyLength] == 0)
  77.                         {
  78.                             leaves[selectedLadybug - flyLength] = 1;
  79.                             leaves[selectedLadybug] = 0;
  80.                         }
  81.                         else
  82.                         {
  83.                             long temp2 = selectedLadybug;
  84.                             if (leaves.Length % 2 != 0)
  85.                             {
  86.                                 temp2 += 1;
  87.                             }
  88.                             long[] smallLeaves2 = new long[leaves.Length - temp2];
  89.                             Array.Copy(leaves, smallLeaves2, smallLeaves2.Length);
  90.                             Array.Reverse(smallLeaves2);
  91.                             long temp3 = 0;
  92.                             long index2 = Array.IndexOf(smallLeaves2, temp3);
  93.                             leaves[selectedLadybug - index2 - 1] = 1;
  94.                             leaves[selectedLadybug] = 0;
  95.                         }
  96.                     }
  97.                 }
  98.  
  99.             }
  100.  
  101.         }
  102.  
  103.         Console.Write(String.Join(" ", leaves));
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement