Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
493
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.90 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. public class Program
  7. {
  8.     static void Main()
  9.     {
  10.         int n = int.Parse(Console.ReadLine());
  11.         int[] plants = Console.ReadLine().Split().Select(int.Parse).ToArray();
  12.  
  13.         int[] days = new int[plants.Length];
  14.         Stack<int> proximityStack = new Stack<int>();
  15.         proximityStack.Push(0);
  16.  
  17.         for (int i = 1; i < plants.Length; i++)
  18.         {
  19.             int maxDays = 0;
  20.  
  21.             while (proximityStack.Count > 0 && plants[proximityStack.Peek()] >= plants[i])
  22.             {
  23.                 maxDays = Math.Max(maxDays, days[proximityStack.Pop()]);
  24.             }
  25.             if (proximityStack.Count > 0)
  26.             {
  27.                 days[i] = maxDays + 1;
  28.             }
  29.             proximityStack.Push(i);
  30.         }
  31.         Console.WriteLine(days.Max());
  32.     }
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement