Advertisement
agario4

Untitled

Oct 22nd, 2021
1,308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.24 KB | None | 0 0
  1. using System;
  2.  
  3. namespace _09._Kamino_Factory {
  4.     class Program {
  5.         static void Main(string[] args) {
  6.             int dnaLength = int.Parse(Console.ReadLine());
  7.  
  8.             #region BEST
  9.  
  10.             string[] bestDnaSequence = new string[dnaLength];
  11.             int bestIndexOfMaxOnes = 0;
  12.             int bestLongest = 0;
  13.             int bestOnesSum = 0;
  14.             int bestIndex = 0;
  15.  
  16.             #endregion
  17.  
  18.             string command = Console.ReadLine();
  19.             int currIndex = 0;
  20.  
  21.             while (command != "Clone them!") {
  22.                 currIndex++;
  23.  
  24.                 #region CURRENT
  25.  
  26.                 // ReSharper disable once PossibleNullReferenceException
  27.                 string[] currDnaSequence = command.Split("!");
  28.                 int currIndexOfMaxOnes = 0;
  29.                 int currLongest = 0;
  30.                 int currSum = 0;
  31.  
  32.                 #endregion
  33.  
  34.                 int currZeros = 0;
  35.                 int currOnes = 0;
  36.                 int lastNum = -1;
  37.  
  38.                 for (int i = 0; i < currDnaSequence.Length; i++) {
  39.                     if (currDnaSequence[i] == "1") {
  40.                         if (lastNum == 0)
  41.                             currOnes = 0;
  42.                         currOnes++;
  43.                         currSum++;
  44.                         lastNum = 1;
  45.                     } else {
  46.                         if (lastNum == 1)
  47.                             currZeros = 0;
  48.                         currZeros++;
  49.                         lastNum = 0;
  50.                     }
  51.  
  52.                     if (Math.Max(currZeros, currOnes) > currLongest) {
  53.                         currLongest = Math.Max(currZeros, currOnes);
  54.                         currIndexOfMaxOnes = i - currLongest + 1;
  55.                     }
  56.                 }
  57.  
  58.                 // i bet this can be optimized so much more
  59.                 if (currLongest > bestLongest) {
  60.                     bestLongest = currLongest;
  61.                     bestIndexOfMaxOnes = currIndexOfMaxOnes;
  62.                     bestOnesSum = currSum;
  63.                     bestIndex = currIndex;
  64.                     bestDnaSequence = currDnaSequence;
  65.                 } else if (currLongest == bestLongest) {
  66.                     if (currIndexOfMaxOnes < bestIndexOfMaxOnes) {
  67.                         bestLongest = currLongest;
  68.                         bestIndexOfMaxOnes = currIndexOfMaxOnes;
  69.                         bestOnesSum = currSum;
  70.                         bestIndex = currIndex;
  71.                         bestDnaSequence = currDnaSequence;
  72.                     } else if (currIndexOfMaxOnes == bestIndexOfMaxOnes) {
  73.                         if (currSum > bestOnesSum) {
  74.                             bestLongest = currLongest;
  75.                             bestIndexOfMaxOnes = currIndexOfMaxOnes;
  76.                             bestOnesSum = currSum;
  77.                             bestIndex = currIndex;
  78.                             bestDnaSequence = currDnaSequence;
  79.                         }
  80.                     }
  81.                 }
  82.  
  83.                 command = Console.ReadLine();
  84.             }
  85.  
  86.             Console.WriteLine($"Best DNA sample {bestIndex} with sum: {bestOnesSum}.");
  87.             Console.WriteLine(string.Join(" ", bestDnaSequence));
  88.         }
  89.     }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement