Advertisement
alidzhikov

LongestIncreasingSequence

May 7th, 2015
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.88 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. class LongestIncreasingSequence
  5. {
  6.     static void Main()
  7.     {
  8.         string inputLine = Console.ReadLine();
  9.  
  10.         string[] numbersAsStrings = inputLine.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
  11.         int[] numbers = new int[numbersAsStrings.Length];
  12.         for (int i = 0; i < numbers.Length; i++)
  13.         {
  14.             numbers[i] = int.Parse(numbersAsStrings[i]);
  15.         }
  16.  
  17.         int bestCount = int.MinValue;
  18.         int bestCountIndex = int.MinValue;
  19.         List<List<int>> increasingSequences = new List<List<int>>();
  20.         int sequencesIndex = 0;
  21.         bool isInIncreasingSequence = false;
  22.         for (int i = 0; i < numbers.Length - 1; i++)
  23.         {
  24.             if (numbers[i] >= numbers[i + 1])
  25.             {
  26.                 if (isInIncreasingSequence == false)
  27.                 {
  28.                     increasingSequences.Add(new List<int>());
  29.                     increasingSequences[sequencesIndex].Add(numbers[i]);
  30.                 }
  31.                 else
  32.                 {
  33.                     increasingSequences[sequencesIndex].Add(numbers[i]);
  34.                 }
  35.                
  36.                 if (increasingSequences[sequencesIndex].Count > bestCount)
  37.                 {
  38.                     bestCount = increasingSequences[sequencesIndex].Count;
  39.                     bestCountIndex = sequencesIndex;
  40.                 }
  41.                 sequencesIndex++;
  42.                 isInIncreasingSequence = false;
  43.             }
  44.             else
  45.             {
  46.                 if (isInIncreasingSequence == false)
  47.                 {
  48.                     increasingSequences.Add(new List<int>());
  49.                     increasingSequences[sequencesIndex].Add(numbers[i]);
  50.                     isInIncreasingSequence = true;
  51.                 }
  52.                 else
  53.                 {
  54.                     increasingSequences[sequencesIndex].Add(numbers[i]);
  55.                 }
  56.             }
  57.         }
  58.  
  59.         if (isInIncreasingSequence)
  60.         {
  61.             increasingSequences[sequencesIndex].Add(numbers[numbers.Length - 1]);
  62.  
  63.             if (increasingSequences[sequencesIndex].Count > bestCount)
  64.             {
  65.                 bestCount = increasingSequences[sequencesIndex].Count;
  66.                 bestCountIndex = sequencesIndex;
  67.             }
  68.         }
  69.         else
  70.         {
  71.             increasingSequences.Add(new List<int>());
  72.             increasingSequences[sequencesIndex].Add(numbers[numbers.Length - 1]);
  73.         }
  74.  
  75.         foreach (List<int> increasingSequence in increasingSequences)
  76.         {
  77.             foreach (int member in increasingSequence)
  78.             {
  79.                 Console.Write("{0} ", member);
  80.             }
  81.             Console.WriteLine();
  82.         }
  83.         Console.WriteLine("Longest: {0}", String.Join(" ", increasingSequences[bestCountIndex]));
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement