Advertisement
b_gandurov

jumps2

May 17th, 2024
388
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.50 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. class Program
  7. {
  8.     static void Main()
  9.     {
  10.         int N = int.Parse(Console.ReadLine());
  11.         string init = Console.ReadLine();
  12.         int[] elements = init.Split().Select(int.Parse).ToArray();
  13.         int[] jumps = new int[N];
  14.         Stack<int> indexStack = new Stack<int>();
  15.         int maxJumps = 0;
  16.         for (int i = 0; i < elements.Length-1; i++)
  17.         {
  18.             int initialIndex = i;
  19.             if (jumps[i] == 0)
  20.             {
  21.                 int count = 1;
  22.                 for (int j = i; j < elements.Length; j++)
  23.                 {
  24.                     if ((elements[j] > elements[initialIndex]))
  25.                     {
  26.                         if (jumps[j] != 0)
  27.                         {
  28.                             count = jumps[j]+1;
  29.                             indexStack.Push(initialIndex);
  30.                             break;
  31.                         }
  32.                         indexStack.Push(initialIndex);
  33.                         initialIndex = j;
  34.                     }
  35.                 }
  36.                 while (indexStack.Count > 0)
  37.                 {
  38.                     int index = indexStack.Pop();
  39.                     jumps[index] = count;
  40.                     count++;
  41.                     maxJumps = Math.Max(maxJumps, jumps[index]);
  42.                 }
  43.             }
  44.         }
  45.         Console.WriteLine(maxJumps);
  46.         Console.WriteLine(string.Join(" ", jumps));
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement