Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace _09._Kamino_Factory {
- class Program {
- static void Main(string[] args) {
- int dnaLength = int.Parse(Console.ReadLine());
- #region BEST
- string[] bestDnaSequence = new string[dnaLength];
- int bestIndexOfMaxOnes = 0;
- int bestMaxOnes = 0;
- int bestOnesSum = 0;
- int bestIndex = 0;
- #endregion
- string command = Console.ReadLine();
- int currIndex = 0;
- while (command != "Clone them!") {
- currIndex++;
- #region CURRENT
- // ReSharper disable once PossibleNullReferenceException
- string[] currDnaSequence = command.Split("!");
- int currIndexOfMaxOnes = 0;
- int currMaxOnes = 0;
- int currOnesSum = 0;
- #endregion
- int currOnes = 0;
- for (int i = 0; i < currDnaSequence.Length; i++) {
- if (currDnaSequence[i] == "1") {
- currOnes++;
- currOnesSum++;
- } else {
- currOnes = 0;
- }
- if (currOnes > currMaxOnes) {
- currMaxOnes = currOnes;
- currIndexOfMaxOnes = i - currOnes + 1;
- }
- }
- // i bet this can be optimized so much more
- if (currMaxOnes > bestMaxOnes) {
- bestMaxOnes = currMaxOnes;
- bestIndexOfMaxOnes = currIndexOfMaxOnes;
- bestOnesSum = currOnesSum;
- bestIndex = currIndex;
- bestDnaSequence = currDnaSequence;
- } else if (currMaxOnes == bestMaxOnes) {
- if (currIndexOfMaxOnes < bestIndexOfMaxOnes) {
- bestMaxOnes = currMaxOnes;
- bestIndexOfMaxOnes = currIndexOfMaxOnes;
- bestOnesSum = currOnesSum;
- bestIndex = currIndex;
- bestDnaSequence = currDnaSequence;
- } else if (currIndexOfMaxOnes == bestIndexOfMaxOnes) {
- if (currOnesSum > bestOnesSum) {
- bestMaxOnes = currMaxOnes;
- bestIndexOfMaxOnes = currIndexOfMaxOnes;
- bestOnesSum = currOnesSum;
- bestIndex = currIndex;
- bestDnaSequence = currDnaSequence;
- }
- }
- }
- command = Console.ReadLine();
- }
- Console.WriteLine($"Best DNA sample {bestIndex} with sum: {bestOnesSum}.");
- Console.WriteLine(string.Join(" ", bestDnaSequence));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment