Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Reflection.Metadata;
- using System.Text;
- using System.Threading.Tasks;
- class KaminoFactory
- {
- static void Main()
- {
- int number = int.Parse(Console.ReadLine());
- int [] ints = new int[number];
- string line = string.Empty;
- int countLine = 0;
- List<string> stringsList = new List<string>();
- while((line = Console.ReadLine()) != "Clone them!")
- {
- stringsList.Add(line);
- countLine++;
- }
- int pos = 0;
- int row = 0;
- int [,] ints2D = new int[countLine, number];
- int[] DNA = new int[countLine];
- int maxDNA = 0;
- //Read int matrix
- foreach(string str in stringsList)
- {
- DNA[row] = 0;
- //Take row
- for(int j = 0; j < str.Length; ++j)
- {
- if(str[j] != '!')
- {
- ints2D[row, pos] = str[j] - '0';
- pos++;
- }
- if(pos >= number) break;
- }
- //Calculate DNA for every row
- row = 0;
- bool isNewSequences = false;
- int member = 0;
- for(int j = 0; j < number -1; ++j)
- {
- if(ints2D[row, j] == ints2D[row, j + 1] && ints2D[row, j] == 1 && isNewSequences == false)
- {
- isNewSequences = true; //start sequences
- member = 1;
- }
- if(ints2D[row, j] == ints2D[row, j + 1] && ints2D[row, j] == 1 && isNewSequences == true)
- {
- member++;
- }
- else if(isNewSequences)
- {
- isNewSequences = false;
- if(member > DNA[row]) {DNA[row] = member;}
- member = 1;
- }
- if(j >= number) break;
- }
- if(maxDNA < DNA[row]) maxDNA = DNA[row]; //maxDNA max number from aray DNA.
- pos = 0;
- row++;
- }
- int countMax = 0;
- for(int k = 0; k < DNA.Length; ++k)
- if(DNA[k] == maxDNA) countMax++;
- int [] bestSequenceIndex = new int[countMax];
- pos = 0;
- for(int k = 0; k < DNA.Length; ++k)
- if(DNA[k] == maxDNA) {bestSequenceIndex[pos] = k; pos++;}
- int bestLine = 0;
- if(countMax == 1)
- {
- bestLine = bestSequenceIndex[0];
- }
- else
- {
- int startIndex = number;
- pos = 0;
- row = 0;
- while(row < bestSequenceIndex.Length)
- {
- for(int k = 0; k < number; ++k)
- {
- if(ints2D[bestSequenceIndex[row],k] > 0)
- {
- if(startIndex > k) {startIndex = k; bestLine = row;}
- break;
- }
- }
- row++;
- }
- }
- Console.WriteLine($"Best DNA sample {bestLine + 1} with sum: {maxDNA}.");
- for(int j = 0; j < number; ++j)
- Console.Write($"{ints2D[bestLine, j]} ");
- }
- }
- /*
- */
Advertisement
Add Comment
Please, Sign In to add comment